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

基本情報技術者 2009年 秋期 午前(科目A)05


問題文

空のスタックに対して次の操作を行った場合、スタックに残っているデータはどれか。ここで、“push ”はスタックへデータを格納し、“pop”はスタックからデータを取り出す操作を表す。 push 1 → push 2 → pop → push 3 → push 4 → pop → push 5 → pop

選択肢

1と3(正解)
2と4
2と5
4と5

空のスタックに対する一連の操作の結果【午前2 解説】

要点まとめ

  • 結論:与えられた一連の操作後にスタックに残るのは、最初にpushした1と続いて残った3の二つ、すなわち選択肢です。操作を順に追えば確実です。
  • 根拠:スタックはLIFO(後入れ先出し)であり、各popは直前にpushされた要素を取り出すため、この順序で2・4・5が取り除かれます。
  • 差がつくポイント:操作を紙に書いて「トップ」を常に示しながら追うか、コインなどでpush/popを模擬して可視化すると早く正確に解けます。

正解の理由

正解:
理由はスタックの動作(LIFO)に従って操作を左から順に追うと明確です。操作ごとのスタック状態を示します(左端が底、右端がトップ):
  • push 1 → [1]
  • push 2 → [1, 2]
  • pop → [1] (2 が取り出される)
  • push 3 → [1, 3]
  • push 4 → [1, 3, 4]
  • pop → [1, 3] (4 が取り出される)
  • push 5 → [1, 3, 5]
  • pop → [1, 3] (5 が取り出される)
    最終的に残るのは1と3であり、選択肢が正解です。

よくある誤解

  • 「popは最初に入れた要素を取り出す(FIFO)」と勘違いしてキューと混同することがよくあります。
  • 操作をまとめて考えて「どれだけpushされたか」だけで判断し、順序を追わないミスも多いです。

解法ステップ

  1. 問題文の操作を左から順に読む。
  2. スタックの性質がLIFO(後入れ先出し)であることを確認する。
  3. 各操作ごとにスタックの中身を更新してメモする(トップがどれかを意識)。
  4. 最後の操作まで追って残った要素を答える。

選択肢別の誤答解説

  • ア: 正解。上の追跡で最終的に残るのは1と3であり一致します。
  • イ: 2と4は、それぞれ最初と中盤のpopで取り出されるため選べません。
  • ウ: 2は最初のpopで既に取り出され、5も最後のpopで取り除かれるため誤りです。
  • エ: 4は中盤のpopで取り出され、5もその後のpopで取り除かれるため残りません。

補足コラム

  • スタックはデータ構造の基本で、関数呼び出しの戻り先管理や逆ポーランド記法の評価、括弧の整合性チェックなど多くの場面で使われます。
  • push/popの操作はいずれも平均してO(1)で実行できます(配列やリンクドリストで実装した場合)。
  • 問題を解く際は、実体的にコインや付箋で「積む/取り出す」を試すと直感的に理解できます。

FAQ

Q: スタックとキューの違いは何ですか?
A: スタックはLIFO(後入れ先出し)、キューはFIFO(先入れ先出し)で取り出す順序が異なります。
Q: 複数のpopが連続するときはどう追えばよいですか?
A: 連続するpopはその都度最新のトップ要素を取り出すので、順にスタックの右端を削るイメージで追ってください。
Q: 操作が長くても手で追うコツはありますか?
A: トップだけをメモする(例えば「現在のトップはX」)か、付箋で模擬して視覚的に操作するとミスが減ります。

関連キーワード: スタック、LIFO、push、pop、データ構造、トレース、アルゴリズム、逆ポーランド記法、括弧チェック
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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