必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 基本情報技術者
  3. 平成17年度春季問題一覧
  4. 平成17年度春季問題13-解答・解説-分析

平成17年度春季問題

問題13

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

7
29
55
326

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

7
29
55
326

解答:ア

<解説>

実行した処理を「PUSH a → PUSH b → POP → PUSH c → PUSH d → PUSH e → PUSH f → POP → POP → PUSH g」として、スタックの状態を考える。
(※開始時、スタックは空とする。)

  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番目のaなのでイが正解である。