由n个元素组成的循环移位顶部

时间:2014-03-14 23:15:52

标签: java stack

我正在尝试编写一个方法,用k个位置执行堆栈的前n个元素的循环旋转。

我可以通过n个位置对一维数组进行循环移位,但我不知道如何使用堆栈执行此操作。

我在想,链接列表可能有帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以使用其他一些堆栈来跟踪前n个元素。 myStack是你的原始堆栈。 int n是您要旋转的元素数量。

public Stack rotateStack(Stack myStack, int n){
 Stack firstNElements = new Stack();
 Stack remainingElements = new Stack();

 for(int i=0; !myStack.isEmpty() && i<n; i++){
  firstNElements.push(myStack.pop());
 }
 while(!myStack.isEmpty()){
  remainingElements.push(myStack.pop());
 }


 Stack newStack = new Stack();
 while(!firstNElements.isEmpty()){
  newStack.push(firstNElements.pop());
 } 

 while(!remainingElements.isEmpty()){
  newStack.push(remainingElements.pop());
 }

 return newStack;
}