Stack vs Queue
Stack vs queue compared — LIFO vs FIFO, operations and use cases, with interactive visualizers for both.
A stack is last-in, first-out (LIFO); a queue is first-in, first-out (FIFO). Both add and remove in O(1) — the difference is which end you take from.
Stack vs Queue at a glance
| Stack | Queue | |
|---|---|---|
| Order | LIFO | FIFO |
| Add / remove | Same end (top) | Opposite ends |
| Used in | Undo, recursion, DFS | Scheduling, buffering, BFS |
| Complexity | O(1) | O(1) |
When to use Stack
Use a stack when the most recent item should be handled first — undo, call stacks, DFS.
When to use Queue
Use a queue when items should be handled in arrival order — task scheduling, BFS, buffers.
Tools for Stack & Queue
スタック可視化ツール
インタラクティブなLIFOスタック — pushとpopをアニメーション付きのtopポインタとステップ操作で確認できます。ブラウザ上ですぐ動作します。
ツールを開くキュー可視化ツール
インタラクティブなFIFOキュー — front/rearポインタのアニメーション付きで要素の追加(enqueue)と取り出し(dequeue)を実行し、ステップ操作ボタンで動きを確認できます。ブラウザ上ですぐに動作します。
ツールを開く連結リスト・ビジュアライザー
単方向連結リストをインタラクティブに操作 — 先頭/末尾への挿入、検索、削除をポインタが動くアニメーションとステップ実行ボタンで確認できます。ブラウザ上でそのまま動作します。
ツールを開くハッシュテーブル可視化ツール
separate chaining方式のインタラクティブなハッシュテーブル。insert・search・deleteの動きを、値のハッシュ化と衝突処理のアニメーションで確認できます。ブラウザ上ですぐに動作します。
ツールを開くStack vs Queue
ハッシュテーブルとは何ですか?
ハッシュテーブルは、複数のバケットを持つ配列にkey/valueのペアを格納するデータ構造です。ハッシュ関数を使って各keyに対応するバケットのインデックスを計算するため、insert・search・deleteの各操作をほぼ一定時間で行えます。
ハッシュ衝突(hash collision)とは何ですか?
異なる2つのkeyが同じバケットにハッシュ化されてしまう現象です。このツールではseparate chainingという方式で衝突を処理しており、各バケットはエントリの連結リスト(linked list)を保持します。
ハッシュテーブル操作の時間計算量はどのくらいですか?
insert・search・deleteはいずれも平均O(1)です。最悪の場合は、多くのkeyが1つのバケットに集中して衝突するため、O(n)になります。
このツールではどのハッシュ関数を使っていますか?
index = value % 7というシンプルな剰余(モジュロ)演算のハッシュ関数を使っており、バケットの動きを追いやすくしています。実際のハッシュテーブルでは、より強力なハッシュ関数を使い、チェーンが長くなりすぎないよう自動的にリサイズを行います。