Java - Как написать метод для обращения одного стека к другому, не разрушая оригинальный стек? - PullRequest
0 голосов
/ 15 июля 2011

Итак, мне нужно написать метод для обратного стека1 на стек2, используя stack1.reverseStack (стек2). Мне нужно сделать это, не разрушая 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 Ответ

1 голос
/ 15 июля 2011

Вы можете сделать это, используя промежуточный стек, если это разрешено -

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