1.3.12 #
解答 #
先用 foreach 语句遍历一遍栈,把所有元素都压入一个临时栈中。
此时临时栈变成了源栈的一个倒序副本。
再将临时栈中的元素依次压入目标栈中,就得到了源栈的一个副本。
代码 #
var src = new Stack<string>();
src.Push("first");
src.Push("second");
src.Push("third");
var des = CopyTo(src);
while (!des.IsEmpty())
{
Console.WriteLine(des.Pop());
}
static Stack<string> CopyTo(Stack<string> src)
{
var des = new Stack<string>();
var temp = new Stack<string>();
foreach (var s in src)
{
temp.Push(s);
}
while (!temp.IsEmpty())
{
des.Push(temp.Pop());
}
return des;
}