算法-第四版-练习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


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

算法-第四版习题索引汇总


posted @ 2017-10-22 15:50  枫竹梦  阅读(199)  评论(0编辑  收藏  举报