はじめに
「キュー」と「スタック」の違いを説明してください。と言われて説明できるでしょうか?
よわよわエンジニアの私は当然説明できないため、調べたことをまとめます。
「キュー」と「スタック」は、プログラミングにおける基本的なデータ構造のひとつです。
どちらも「データを一時的にためておく入れ物」ですが、取り出し方のルールが異なるため、使いどころも変わってきます。
■ キュー(Queue)とは
特徴: 先に入れたものから順に取り出す(FIFO:First In, First Out)
スーパーのレジ待ちの列のような処理
イメージ図
追加 → [1] [2] [3] [4] → 取り出し
用途例:
- プリンタの印刷待ち行列
- タスクの順次処理
■ スタック(Stack)とは
特徴: 最後に入れたものから取り出す(LIFO:Last In, First Out)
積み重ねた本の山を上から取る処理(最後に積んだ本が最初に取れる)
イメージ図
追加 → ┌───┐
│ 3 │ ← 最後に追加(最初に取り出される)
├───┤
│ 2 │
├───┤
│ 1 │ ← 最初に追加(最後に取り出される)
└───┘
取り出しは上から(3 → 2 → 1 の順)
用途例:
- ブラウザの「戻る」操作(Undo処理)
- 関数呼び出しの履歴管理(コールスタック)
■ まとめ
「順番を守って処理したい」ときはキュー
「直前の操作を取り消したい/戻りたい」ときはスタック
アルゴリズムやデータ処理を行う際の基礎になる構造なので、名前だけでなく用途までしっかり押さえておきましょう。