1.3.12

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;
}

另请参阅 #

Generics 库