所以,我需要编写一个方法,使用stack1.reverseStack(stack2)将stack1反转到stack2。我需要在不破坏stack1的情况下执行此操作。这就是我到目前为止......
public void reverseStack(StackClass otherStack)
{
int x = stackTop;
for (int i = 0; i < x; i++)
{
otherStack.push(copy.top());
copy.pop();
}
}
只有我无法找到一种不破坏stack1的方法。我想过制作一个复制堆栈并使用它,但我无法弄清楚如何在方法中复制stack1。
答案 0 :(得分:1)
如果允许,可以使用中间堆栈来执行此操作 -
public void reverseStack(StackClass otherStack)
{
StackClass newStack = new StackClass();
StackObj obj = null;
while ( (obj = this.pop()) != null ) {
otherStack.push(obj);
newStack.push(obj);
}
// Now push back from newStack to this stack
while ( (obj = newStack.pop() ) != null ) {
this.push(obj);
}
}