平成22年春期試験問題 問85

下から上へデータを積み上げ,上にあるデータから順に取り出すデータ構造(以下,スタックという)がある。これを用いて,図に示すような,右側から入力されたデータの順番を変化させて,左側に出力する装置を考える。この装置に対する操作は次の3通りである。
  1. 右側から入力されたデータをそのまま左側に出力する。
  2. 右側から入力されたデータをスタックに積み上げる。
  3. スタックの一番上にあるデータを取り出して左側に出力する。
この装置の右側から順番にX, Y, Z を入力した場合に,この①~③の操作を組み合わせても左側に出力できない順番はどれか。
85.png

  • X,Z,Y
  • Y,Z,X
  • Z,X,Y
  • Z,Y,X
正解 問題へ
分野 :テクノロジ系
中分類:アルゴリズムとプログラミング
小分類:アルゴリズムとプログラミング
解説
スタックは、LIFO(Last In First Out)、すなわち最後に格納したものから先に取り出すルールでデータを管理する構造です。スタック構造ではデータを格納する操作をpush、取り出す操作をpopと呼びます。

取り出すのは最後に格納したデータのみ、というルールに従って、一つずつ出力できるかどうか試していくと次のようになります。
  • push(X) → pop(X) → push(Y) → push(Z) → pop(Z) → pop(Y)
  • push(X) → push(Y) → pop(Y) → push(Z) → pop(Z) → pop(X)
  • 出力できません。Zを最初に取り出すためには、最初に push(X) → push(Y) → push(Z)で3つのデータを積み必要がありますが、Zの取り出し後、Xの上にはYがあるため、Yより先にXを取り出すことができません。
  • push(X) → push(Y) → push(Z) → pop(Z) → pop(Y) → pop(X)

Pagetop