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

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

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

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

 ア  X、Z、Y  イ  Y、Z、X  ウ  Z、X、Y  エ  Z、Y、X


答え ウ


解説

 ア  @(Xをそのまま出力)→A(Yをスタックに積む)→@(Zをそのまま出力)→B(Yをスタックから取り出して出力)
 イ  A(Xをスタックに積む)→@(Yをそのまま出力)→@(Zをそのまま出力)→B(Xをスタックから取り出して出力)
 ウ  Zから出力するためには、“A(Xをスタックに積む)→A(Yをスタックに積む)”という操作を行う必要がありますが、スタックからの取り出しはYが先になるため、Z、X、Yは出力できません。
 エ  A(Xをスタックに積む)→A(Yをスタックに積む)→@(Zをそのまま出力)→B(Yをスタックから取り出して出力)→B(Xをスタックから取り出して出力)


キーワード
・スタック

キーワードの解説
  • スタック
    データを一時的に記憶するためにメモリに割り当てる領域のことです。
    データの取り出しを行うとき、取り出されるデータは最後に挿入されたデータになるので、後入れ先出し方式(Last-In First-Out、LIFO)とも呼ばれます。

もっと、「スタック」について調べてみよう。

戻る 一覧へ 次へ