我正在尝试编写一个方法,用k个位置执行堆栈的前n个元素的循环旋转。
我可以通过n个位置对一维数组进行循环移位,但我不知道如何使用堆栈执行此操作。
我在想,链接列表可能有帮助吗?
答案 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;
}