IPA過去問ドリル

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

テクノロジ/アルゴリズム

PUSH命令でスタックにデータを入れ,POP命令でスタックからデータを取り出す。動作中のプログラムにおいて,ある状態から次の順で10個の命令を実行したとき,スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。 命令の実行順序:PUSH,PUSH,POP,PUSH,PUSH,PUSH,PUSH,POP,POP,PUSH 実行後のスタックの状態(上から下へ):192,55,326,7,29 (注:本サイトでは原問題の図を文字表記に変換しています)

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

正解:イ

解説

命令列PUSH,PUSH,POP,PUSH,PUSH,PUSH,PUSH,POP,POPPUSH(10命令)を実行すると,1番目のPUSHで入れたデータの深さ(トップからの位置)は,PUSH/POPのたびに1ずつ増減し,最終的にトップから4番目の位置に来ます。図の最終状態でトップから4番目の値は7なので,これが1番目のPUSH命令で入れたデータです。

選択肢ごとの解説

  • 誤り。29は最終状態で一番下にある値で,これは10個の命令を実行する前から既にスタックの底にあったデータです。
  • 正しい。命令の実行に伴う深さの増減を追跡すると,1番目のPUSH命令で入れたデータは最終的にトップから4番目(値7)に位置します。
  • 誤り。326はトップから3番目の値で,深さの追跡結果と一致しません。
  • 誤り。55はトップから2番目の値で,深さの追跡結果と一致しません。
応用情報技術者の過去問を演習モードで解く