アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問8
PUSH 命令でスタックにデータを入れ,POP 命令でスタックからデータを取り出す。動作中のプログラムにおいて,ある状態から次の順で 10 個の命令を実行したとき,スタックの中のデータは図のようになった。1 番目の PUSH 命令でスタックに入れたデータはどれか。
命令の実行順: PUSH → PUSH → POP → PUSH → PUSH → PUSH → PUSH → POP → POP → PUSH(1 行目 5 個,2 行目 5 個の計 10 個)。
スタックの図(上が口。左から PUSH で入れ,右へ POP で取り出す): 上から 192, 55, 326, 7, 29(一番下が 29)。
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20200126 実施分 問8(問題文は IPA の公開問題。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:イ
覚える知識
スタックのpush/popトレース
スタックは後入れ先出しで、POPは最後にPUSHしたデータを取り出す。
この問題で必要なこと
PUSH/POPを順に追い、最終的に残るデータ列(下から29,7,326,55,192)から1番目のPUSHの値を逆算する。1番目のPUSHは一度もPOPされず残る最下層…ではなく、図の並びから7と判定する。
ひっかけ
最下層のデータを1番目と短絡させる誤りを誘う。
この知識の出題:本試験系 5 回・免除試験 4 回(公開問題での観測値)。頻出知識ランキング87位(全1,254件中)。