Java - 如何编写一种方法将一个堆栈反转到另一个堆栈而不破坏原始堆栈?

标签 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。

最佳答案

如果允许的话,您可以使用中间堆栈来完成此操作 --

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

关于Java - 如何编写一种方法将一个堆栈反转到另一个堆栈而不破坏原始堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702151/

相关文章:

c++ - 为什么在函数栈上返回值不安全

javascript - 如何克隆 -> 反向 -> 和 prependTo?

Django - 为什么要使用 url 命名空间?

Java - Scene1 未显示,相同的 Scene2 有效

java - 在地址簿中存储信息

java - 当一个线程在尝试获取锁后被挂起时,是否总是有上下文切换?

java - 实现linkedStack时出现NullPointerException

java - 如何使用 Java 从苹果 p8 文件解析 jwt 签名 key

java - 将运算符从 double 转换回 char 后,如何使用它?

c - 反转几个文件的所有字符串