ITの基礎知識|ITパスポート・基本情報

ITパスポート 平成22年春 問85

2017.10.02

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

  1. 右側から入力されたデータをそのまま左側に出力する。
  2. 右側から入力されたデータをスタックに積み上げる。
  3. スタックの一番上にあるデータを取り出して左側に出力する。

この装置の右側から順番に X, Y, Z を入力した場合に、この1~3の操作を組合せても、左側に出力できない順番はどれか。

  • ア: X, Z, Y
  • イ: Y, Z, X
  • ウ: Z, X, Y
  • エ: Z, Y, X

Show answer

正解: ウ

解説:

それぞれの選択肢を、図を用いてシミュレーションし、可能かどうかを検討する。

  • アの場合、下記の手順で可能。
    • ①の処理で「X」を出力。
    • ②の処理で「Y」をスタックに積む。
    • ①の処理で「Z」を出力
    • ③の処理で「Y」をスタックから出力
  • イの場合、下記の手順で可能。
    • ②の処理で「X」をスタックに積む。
    • ①の処理で「Y」を出力。
    • ①の処理で「Z」を出力。
    • ③の処理で「X」をスタックから出力。
  • ウの場合、以下の手順となるが、不可能となる。
    • ②の処理で「X」をスタックに積む。
    • ②の処理で「Y」をスタックに積む。
    • ①の処理で「Z」を出力。
    • ③の処理で「X」を出力しようとするが、スタックの一番上は「Y」なので、ここで不可能となる。
  • エの場合、以下の手順で可能。
    • ②の処理で、「X」をスタックに積む。
    • ②の処理で「Y」をスタックに積む。
    • ①の処理で「Z」を出力。
    • ③の処理で「Y」を出力。
    • ③の処理で「X」を出力。