基本情報技術者試験の「科目B」でデータ構造の基本として必ず出題されるのが、スタック(Stack)とキュー(Queue)です!
「Push や Pop でデータがどう入れ替わるのか頭の中で整理できない…」
「LIFO(後入れ先出し)と FIFO(先入れ先出し)の違いが試験問題で混同してしまう…」
そんな悩みを持つ未経験・文系受験生のために、当サイトでは1行1処理の厳密なトレース & データ構造の出入りがひと目でわかるビジュアルシミュレーターを用意しました!
まずは実際に動かしながら、スタックとキューの動きの違いを体感してみましょう。
1. 【動く図解】ステップ進むボタンでトレースを擬似体験してみよう
下の「進む ➔」ボタンを押すと、実行中のコード行が1行ずつハイライトされ、データ構造の内部(スタック・キュー)への要素の追加・取り出しがリアルタイムに確認できます。
スタック構造の視覚化
2. スタック(Stack)とは?「後入れ先出し(LIFO)」の仕組み
スタック(Stack)は、本を上に積み上げていくようなイメージのデータ構造です。
最後に載せた本(最新データ)を一番最初に取ることになるため、「後入れ先出し(LIFO: Last-In, First-Out)」と呼ばれます。
スタックの基本操作用語
- Push(プッシュ): スタックの一番上にデータを追加する
- Pop(ポップ): スタックの一番上からデータを取り出す
身近な例では、Webブラウザの「戻るボタン」や、テキストエディタの「元に戻す(Ctrl+Z)」の操作履歴管理に使われています。
3. キュー(Queue)とは?「先入れ先出し(FIFO)」の仕組み
キュー(Queue)は、テーマパークやレジの「順番待ちの行列」のようなイメージのデータ構造です。
一番最初に取り並んだ人(最古のデータ)から順番に処理されるため、「先入れ先出し(FIFO: First-In, First-Out)」と呼ばれます。
キューの基本操作用語
- Enqueue(エンキュー / 追加): 末尾にデータを並べる
- Dequeue(デキュー / 取り出し): 先頭からデータを取り出す
身近な例では、プリンターの「印刷ジョブの待ち行列」や、イベント予約の先着順処理などに使われています。
4. 科目Bでの出題パターンとトレースのコツ
基本情報試験の科目Bでは、以下のような組み合わせ問題が頻出します。
【例題イメージ】10, 20, 30 の順でPushし、1回Popしたあとに 40 をPush。その後2回Popしたとき、取り出される値の順序は?
- スタック(LIFO)の場合: 取り出される順は 30 ➔ 40 ➔ 20
- キュー(FIFO)の場合: 取り出される順は 10 ➔ 40 ➔ 20
紙の上で解く際は、縦向きの箱(スタック)または横向きの土管(キュー)を余白にメモし、値の出入りを arrow(矢印)で書き書きしながら追うのが間違いを防ぐコツです。
5. スタックとキューに関するよくある質問(FAQ)
Q. スタックが満杯の時にさらにPushしようとするとどうなりますか?
A. メモリ領域をオーバーしてエラーになる現象を「スタックオーバーフロー(Stack Overflow)」と呼びます。再帰呼び出しの無限ループなどでよく発生します。
Q. 空のスタックやキューからPopしようとするとどうなりますか?
A. 取り出すデータが存在しないため「スタックアンダーフロー」エラーが発生します。
まとめ:データの出入り順(LIFO/FIFO)を完璧に把握しよう
スタックとキュー攻略のポイントは、「最後に入れたものが先か(Push/Pop)」「最初に入れたものが先か(Enqueue/Dequeue)」の区別です。
シミュレーターの右上プルダウンで「スタック」と「キュー」を切り替えながらステップ実行し、取り出される値の違いを完璧に master しましょう!

コメント