算法-第四版-练习1.3.12解答
问题
编写一个可迭代的Stack用例,它含有一个静态的copy()方法,接受一个字符串的栈作为参数并返回该栈的一个副本。
解决思路
由于栈的迭代器是逆向的迭代器,实现时需要注意方向问题。
代码
在Stack中添加如下方法:
public static <T> Stack<T> copy(Stack<T> s)
{
Iterator<T> it = s.iterator();
Stack<T> result = new Stack<T>();
Stack<T> temp = new Stack<T>();
while (it.hasNext()) {
temp.push(it.next());
}
it = temp.iterator();
while (it.hasNext()) {
result.push(it.next());
}
return result;
}
测试代码:
/**
* Description :
* Author : mn@furzoom.com
* Date : Oct 20, 2016 2:41:24 PM
* Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
*/
package com.furzoom.lab.algs.ch103;
/**
* ClassName : E10312 <br>
* Function : TODO ADD FUNCTION. <br>
* date : Oct 20, 2016 2:41:24 PM <br>
*
* @version
*/
public class E10312
{
public static void main(String[] args) {
Stack<String> s1 = new Stack<String>();
s1.push("first");
s1.push("second");
s1.push("third");
Stack<String> s2 = Stack.copy(s1);
while (!s2.isEmpty()) {
System.out.println(s2.pop());
}
}
}
结果:
third second first
作者:马 岩(Furzoom) (http://www.cnblogs.com/furzoom/)
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。

浙公网安备 33010602011771号