下から上へデータを積み上げ、上にあるデータから順に取り出すデータ構造(以下、スタックという)がある。これを用いて、図に示すような、右側から入力されたデータの順番を変化させて、左側に出力する装置を考える。この装置に対する操作は次の3通りである。

- 右側から入力されたデータをそのまま左側に出力する。
- 右側から入力されたデータをスタックに積み上げる。
- スタックの一番上にあるデータを取り出して左側に出力する。
この装置の右側から順番に X, Y, Z を入力した場合に、この1~3の操作を組合せても、左側に出力できない順番はどれか。
- ア: X, Z, Y
- イ: Y, Z, X
- ウ: Z, X, Y
- エ: Z, Y, X
解答を見る
正解: ウ
解説:
それぞれの選択肢を、図を用いてシミュレーションし、可能かどうかを検討する。
- アの場合、下記の手順で可能。
- ①の処理で「X」を出力。
- ②の処理で「Y」をスタックに積む。
- ①の処理で「Z」を出力
- ③の処理で「Y」をスタックから出力
- イの場合、下記の手順で可能。
- ②の処理で「X」をスタックに積む。
- ①の処理で「Y」を出力。
- ①の処理で「Z」を出力。
- ③の処理で「X」をスタックから出力。
- ウの場合、以下の手順となるが、不可能となる。
- ②の処理で「X」をスタックに積む。
- ②の処理で「Y」をスタックに積む。
- ①の処理で「Z」を出力。
- ③の処理で「X」を出力しようとするが、スタックの一番上は「Y」なので、ここで不可能となる。
- エの場合、以下の手順で可能。
- ②の処理で、「X」をスタックに積む。
- ②の処理で「Y」をスタックに積む。
- ①の処理で「Z」を出力。
- ③の処理で「Y」を出力。
- ③の処理で「X」を出力。