Stackとは?仕組み・使われる場面・LIFOとの関係を初心者にもわかりやすく解説【データ構造の基礎】
プログラミングやアルゴリズムの基礎として必ず登場するデータ構造が Stack(スタック) です。
スタックは「最後に入れたデータが最初に取り出される」という LIFO(Last In, First Out)方式で動作し、コンピュータ内部のさまざまな処理を支える重要な仕組みです。
この記事では、Stackとは何か、仕組み、使われる場面、関連する概念をわかりやすく解説します。
◆ Stackとは?
Stack(スタック)とは、
“後入れ先出し(LIFO)” でデータを扱うデータ構造
のことです。
例えるなら、
積み重ねた皿を上から順に取る ような仕組みです。
◆ Stackの基本操作
スタックはとてもシンプルな操作で構成されます。
● push
データを上に積む(追加する)
● pop
一番上のデータを取り出す(削除する)
● peek(top)
上にあるデータを参照する(取り出さない)
この3つだけでスタックは成り立ちます。
◆ Stackの動作イメージ(LIFO)
push: A → Stack = [A]
push: B → Stack = [A, B]
push: C → Stack = [A, B, C]
pop → C(最初に出る)
pop → B
pop → A(最後に出る)
最後に追加したデータから取り出されるのが特徴です。
◆ Stackが使われる場面
スタックはコンピュータの多くの場面で利用されています。
● 1. 関数呼び出し(コールスタック)
関数A → 関数B → 関数C
と呼び出すと、戻り方は
C → B → A
の順になり、これはLIFO(スタック)の動作です。
● 2. Undo・やり直し機能
- 文字入力の取り消し
- 画像編集の取り消し
「最後の操作から順に戻す」ためスタックが使われます。
● 3. ブラウザの戻る
Webページを移動すると履歴が積まれ、
“戻る” ときは最後の履歴から取り出します。
● 4. 深さ優先探索(DFS)
探索アルゴリズムの一種で、
“最後に訪れた地点” から探索を続けるため、
内部的にスタックが利用されます。
● 5. 式の評価(逆ポーランド記法など)
数学式の計算やコンパイラの内部処理で利用されます。
◆ Stackのメリット
● 1. 設計がシンプル
push / pop だけで扱える簡潔なデータ構造。
● 2. 高速
操作の計算量は一般的に O(1)。
● 3. 処理の“履歴”を扱いやすい
Undo・関数呼び出しなど履歴管理に最適。
◆ Stackのデメリット
- 任意の位置のデータにアクセスできない
- 途中の要素を直接操作できない
- FIFO(先入れ先出し)が必要な場面には不向き
「最後に入れたものから処理する」という目的に特化した構造です。
◆ StackとQueueの違い
| データ構造 | 特徴 | 説明 |
|---|---|---|
| Stack | LIFO | 最後に入れたデータから取り出す |
| Queue | FIFO | 最初に入れたデータが最初に出る |
用途に応じて使い分けます。
◆ まとめ:Stackはシンプルで強力なデータ構造
Stack(スタック)は、
- LIFO方式でデータを管理する
- push / pop の単純な操作
- 履歴管理や関数処理の基盤となる
- 多くのアプリや内部システムで利用される
という特徴を持ち、プログラミングとコンピュータの基礎を理解するうえで欠かせないデータ構造です。


