平成23年度特別 応用情報技術者試験 午前 問7
PUSH命令でスタックにデータを入れ,POP命令でスタックからデータを取り出す。動作中のプログラムにおいて,ある状態から次の順で10個の命令を実行したとき,スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。

- ア 29
- イ 7
- ウ 326
- エ 55
解答・解説を見る
正解:イ
AI解説
スタックはLIFO(後入れ先出し)構造のため、10個の命令実行後のスタックの中身から、命令列を逆にたどる(最後にPOPされたものから遡る)ことで、各PUSH命令で積まれたデータを一意に特定できる。設問の図から1番目のPUSH命令で入れたデータは7である。 ア: 29。スタックの状態から逆算した際に該当しないデータであり誤り。 イ: 1番目のPUSH命令で積まれたデータ「7」。命令列を最後から逆にたどり、最初にPUSHされたデータとして特定され正解。 ウ: 326。同様に逆算結果と一致しないため誤り。 エ: 55。同様に逆算結果と一致しないため誤り。 💡 スタックのトレース問題は、最終状態から命令を1つずつ逆再生する(POPは直前にPUSHされた値を戻す、PUSHは取り除く)ことで各操作時のデータを復元するのが定石。
出典:平成23年度 特別 応用情報技術者試験 午前 問7 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。