平成23年度特別試験 問7 / 80

平成23年度 特別試験 応用情報技術者試験 午前 問7

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

問題の図

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:イ

スタックは後入れ先出し(LIFO)です。図では上から入れて上から取り出すので,一番下の29が最も古いデータです。

命令は PUSH, PUSH, POP, PUSH, PUSH, PUSH, PUSH, POP, POP, PUSH の順で,PUSHが7回,POPが3回なので,データは差し引き4個増えます。最終的に5個あるので,命令実行前から1個(一番下の29)が入っていたことになります。

入れたデータをx1〜x7として追跡します(左が底)。

  1. PUSH x1 → [29, x1]
  2. PUSH x2 → [29, x1, x2]
  3. POP → [29, x1](x2が取り出される)
  4. PUSH x3 → [29, x1, x3]
  5. PUSH x4 → [29, x1, x3, x4]
  6. PUSH x5 → [29, x1, x3, x4, x5]
  7. PUSH x6 → [29, x1, x3, x4, x5, x6]
  8. POP → [29, x1, x3, x4, x5]
  9. POP → [29, x1, x3, x4]
  10. PUSH x7 → [29, x1, x3, x4, x7]

これを図(下から29, 7, 326, 55, 192)と照らし合わせると,x1=7,x3=326,x4=55,x7=192 です。

  • ア: 29
    誤り。29は10個の命令を実行する前からスタックの底にあったデータです。

  • イ: 7
    正しい。1番目のPUSHで入れたデータは,底の29のすぐ上に残っている7です。

  • ウ: 326
    誤り。326は4番目の命令(3回目のPUSH)で入れたデータです。

  • エ: 55
    誤り。55は5番目の命令(4回目のPUSH)で入れたデータです。


答え

イ: 7

出典:平成23年度 特別試験 応用情報技術者試験 午前 問7

平成23年度特別試験の他の問題