算法-第四版-练习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/)
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。
版权声明:本文的版权归作者与博客园共同所有。转载时请在明显地方注明本文的详细链接,未经作者同意请不要删除此段声明,感谢您为保护知识产权做出的贡献。