アルゴリズムとプログラミング

基本情報技術者試験 科目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件中)。

この知識をアプリで解いて覚える レッスン「スタックとキュー(LIFO と FIFO)」で学ぶ

同じ知識の過去問