如何在c#或Java中进行堆栈交换

时间:2012-10-25 05:59:00

标签: java algorithm c#-4.0 data-structures stack

我想交换两个堆栈,这基本上意味着堆栈的内容。 我怎样才能在C#或Java或C

中做到这一点

1 个答案:

答案 0 :(得分:6)

你能交换引用吗?即给出一个堆栈s1和s2:

Stack<T> temp = s2;
s2 = s1;
s1 = temp;

切换堆栈内容的最简单方法可能是使用另一个堆栈:

int secondSize = s1.size();

while(!s1.isEmpty()){

    holdStack.push(s1.pop());
}
while(!s2.isEmpty()){
    holdStack.push(s2.pop());
}

for(int i = 0; i < secondSize; i++){
    s1.push(holdStack.pop());
}
while(!holdStack.isEmpty()){
    s2.push(holdStack.pop());
}