平成23年 春期 応用情報技術者 午前 問7

PUSH命令でスタックにデータを入れ、POP命令でスタックからデータを取り出す。
動作中のプログラムにおいて、ある状態から次の順で10個の命令を実行したとき、スタックの中のデータ次のようになった。
1番目のPUSH命令でスタックに入れたデータはどれか。

 ア  29  イ  7  ウ  326  エ  55


答え イ


解説
実行した処理を「PUSH a → PUSH b → POP → PUSH c → PUSH d → PUSH e → PUSH f POP → POP → PUSHg」として、スタックの状態を考える。(最初、スタックは空とする。)

  1. PUSH aでスタックは[a]
  2. PUSH bでスタックは[b, a]
  3. POPでスタックからデータbを取り出し[a]
  4. PUSH cでスタックは[c, a]
  5. PUSH dでスタックは[d, c, a]
  6. PUSH eでスタックは[e, d, c, a]
  7. PUSH fでスタックは[f, e, d, c, a]
  8. POPでスタックからデータfを取り出し[e, d, c, a]
  9. POPでスタックからデータeを取り出し[d, c, a]
  10. PUSH gでスタックは[g, d, c, a]
したがって、最初にPUSHしたデータはスタックの上から4番目なので7(イ)になる。


キーワード
・スタック

キーワードの解説
  • スタック
    処理途中のデータを一時的に記憶させるメモリ領域のことで、記憶させた順番と逆の順にデータを取り出します。
    1→2→3→4とスタックにセットすると、取り出す順は4→3→2→1になります。これをLIFO(Last-In First-Out)やFILO(First-In Last-Out)と呼びます。

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

戻る 一覧へ 次へ