スタック構造のみでキュー構造を実装する方法
1478 ワード
文書ディレクトリ一、テーマ 二、解題構想 三、コード実装(Java) 一、テーマ
スタック構造のみでキュー構造を実装する方法
二、問題を解く構想
スタック:先に入ってから出ます.
キュー:先頭に進みます.
2つのスタックを定義します:pushとpop.
キューに入る:新しいデータが表示されるとpushスタックに押し込まれます.
アウトキュー: pushスタックとpopスタックが空の場合、エラーが表示されます. popスタックが空でpushスタックにデータがある場合、pushのすべてのデータをpopスタックに注ぎ込み、popスタックのスタックトップをポップアップし、戻り値として返します. popスタックが空でない場合、popスタックのスタックトップをポップアップし、戻り値として返します.
キューの先頭に戻る:はpopスタックのスタックトップ値(ポップアップされない)を返し、残りはアウトキュー操作と同じです. 三、コード実装(Java)
スタック構造のみでキュー構造を実装する方法
二、問題を解く構想
スタック:先に入ってから出ます.
キュー:先頭に進みます.
2つのスタックを定義します:pushとpop.
キューに入る:
アウトキュー:
キューの先頭に戻る:
import java.util.Stack;
public class StackToQueue {
private Stack stackPush;
private Stack stackPop;
//
public StackToQueue() {
stackPush = new Stack<>();
stackPop = new Stack<>();
}
//
public void EnQueue(int obj) {
stackPush.push(obj);
}
//
public int DeQueue() {
if (stackPush.empty() && stackPop.empty())
throw new Error("The Queue is empty!");
if (!stackPop.empty())
return stackPop.pop();
while (!stackPush.empty()) {
stackPop.push(stackPush.pop());
}
return stackPop.pop();
}
//
public int peek() {
if (stackPush.empty() && stackPop.empty())
throw new Error("The Queue is empty!");
if (!stackPop.empty())
return stackPop.peek();
while (!stackPush.empty()) {
stackPop.push(stackPush.pop());
}
return stackPop.peek();
}
}