割り当てのために、スタックを使用してキューを作成する必要がありますが、このコードで何が間違っているのか分かりません。私は、プライマリ、代替、および一時的なスタックを作成しました。すべてのプッシュ、私は値を代替に追加し、現在プライマリにあるすべてが一時的にポップされることを望みます。その後、一時的に、すべての値を代替変数にポップしてから、代替変数がメインスタックになるように変数を変更します。さて、スタックに入力された複数の値をテストするためにこれを実行すると、何も出力されない無限ループが発生します。私はしばらくこのことに固執していたので、私はここで何か助けを得ることができたと思っていた。ここにコードがあります。Javaでスタックを使用してキューを作成する
Stack<Integer> mainStack = new Stack<Integer>();
Stack<Integer> altStack = new Stack<Integer>();
Stack<Integer> tmpStack = new Stack<Integer>();
public void push(int x) {
altStack.add(x);
while (mainStack.empty() == false){
tmpStack.push(mainStack.pop());
}
while(tmpStack.empty() == false) {
altStack.push(tmpStack.pop());
}
mainStack = altStack;
altStack = tmpStack;
}
public int pop() {
return mainStack.pop();
}
public int peek() {
return mainStack.peek();
}
public boolean empty() {
return mainStack.empty();
}
プッシュ後に古いメインスタック参照はどうなりますか?プッシュをシンプルにし、スタック転送ロジックをポップにするのも簡単です。 – vandale