您的位置:首页 > 其它

算法-第四版-练习1.3.12解答

2017-10-22 15:50 113 查看

问题

编写一个可迭代的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


算法-第四版-1.3 背包、队列和栈-习题索引汇总

算法-第四版习题索引汇总
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: