Algs4-1.3.12在可迭代Stack用例中写一个copy栈方法
1.3.12编写一个可迭代的Stack用例,它含有一个静态的copy()方法,接受一个字符串的栈作为参数,并返回该栈的一个副本。注意:这种能是迭代器价值的一个重要体现,因为有了它我们无需改变基本API就能够实现这种功能。
答:
public class test
{
public static void main(String[] args)
{
Stack<String> s=new Stack<String>();
while(!StdIn.isEmpty())
{
String item=StdIn.readString();
s.push(item);
}
//
StdOut.println("Stack of s before copy:");
show(s);
//
Stack<String> s2=copy(s);
StdOut.println("Stack of s after copy:");
show(s);
StdOut.println("Stack of s copy:");
show(s2);
}//end main
public static Stack<String> copy(Stack<String> s)
{
Stack<String> tempStack=new Stack<String>();
Stack<String> copyStack=new Stack<String>();
for(String item:s)
tempStack.push(item);
for(String item:tempStack)
copyStack.push(item);
return copyStack;
}
private static void show(Stack<String> s)
{
for(String item:s)
StdOut.print(item);
StdOut.println();
}
}//end class