戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2011年 春期 午前207


問題文

PUSH 命令でスタックにデータを入れ、POP 命令でスタックからデータを取り出す。動作中のプログラムにおいて、ある状態から次の順で10個の命令を実行したとき、スタックの中のデータは図のようになった。1番目の PUSH 命令でスタックに入れたデータはどれか。
応用情報技術者 2011年 春期 午前2 問07の問題画像

選択肢

29
7(正解)
326
55

PUSH命令とPOP命令の動作解析【午前2 解説】

要点まとめ

  • 結論:最初にPUSHしたデータは「7」である。
  • 根拠:スタックはLIFO(後入れ先出し)構造で、命令の順序と最終状態から逆算できる。
  • 差がつくポイント:PUSHとPOPの操作順序を正確に追い、スタックの変化を丁寧にシミュレーションする力が問われる。

正解の理由

スタックは後入れ先出しのため、命令の実行順にPUSHとPOPを追い、最終的なスタックの状態(上から192, 55, 326, 7, 29)と照合すると、最初にPUSHされたデータは「7」であることがわかります。
この問題は、命令の流れを正確に追い、どのデータがどのタイミングでスタックに入れられ、取り出されたかを理解することが重要です。

よくある誤解

スタックの動作を単純に「最初に入れたものが一番下」と誤解し、操作順序を無視してしまうことがあります。
また、POP命令で取り出されたデータを考慮せずに最終状態だけで判断するのも誤りです。

解法ステップ

  1. スタックの初期状態を空と仮定する。
  2. 命令の順にPUSHとPOPを実行し、スタックの状態を逐次更新する。
  3. PUSH命令では新しいデータをスタックの上に積む。
  4. POP命令ではスタックの一番上のデータを取り出す。
  5. 最終的なスタックの状態と照合し、どのデータがどのタイミングで入ったかを逆算する。
  6. 最初にPUSHされたデータを特定する。

選択肢別の誤答解説

  • ア: 29
    最下部にあるが、最後にPUSHされた可能性が高く、最初ではない。
  • イ: 7
    正解。操作の流れから最初にPUSHされたデータである。
  • ウ: 326
    中間に位置し、途中でPUSHされたデータであり最初ではない。
  • エ: 55
    上から2番目にあり、途中でPUSHされたデータで最初ではない。

補足コラム

スタックはLIFO構造で、プログラムの関数呼び出しや戻りアドレスの管理に使われます。PUSH命令はデータを積み、POP命令は積んだデータを取り出すため、操作の順序を正確に理解することが重要です。
この問題は、スタックの基本動作を理解し、命令の流れを追う力を養う良い練習になります。

FAQ

Q: スタックの最初に入れたデータは必ず一番下にあるのですか?
A: はい、LIFO構造のため最初に入れたデータは一番下に位置しますが、途中のPOP命令で取り出される場合もあります。
Q: POP命令で取り出したデータはどこに行くのですか?
A: POP命令はスタックの一番上のデータを取り出し、スタックから削除します。取り出したデータは通常、CPUのレジスタなどに移されます。

関連キーワード: スタック、PUSH命令、POP命令、LIFO, データ構造、命令解析
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について