Java - 如何在不破坏原始堆栈的情况下编写一个方法将一个堆栈反转到另一个堆栈?

时间:2011-07-15 02:41:05

标签: java stack reverse

所以,我需要编写一个方法,使用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。

1 个答案:

答案 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);
   }
}