LIFOとは?仕組み・使われる場面・データ構造との関係を初心者にもわかりやすく解説【スタック動作の基礎】
データの扱い方を理解するうえで重要な概念に LIFO(Last In, First Out) があります。
これは「最後に入ったものが最初に取り出される」という動作方式で、プログラミング、OS、アプリケーション内部など幅広く利用されています。
この記事では、LIFOとは何か、その仕組み、使われる場面、関連するデータ構造まで初心者にもわかりやすく解説します。
◆ LIFOとは?
LIFO(Last In, First Out)とは、
“最後に入れたデータが最初に取り出される” というデータ管理方式のことです。
例えるなら、
積み重ねた皿を上から取っていく動作 がLIFOです。
◆ LIFOを実現する代表的なデータ構造:スタック(Stack)
LIFOの動作をそのまま表すデータ構造が スタック(Stack) です。
● スタックで行われる2つの基本操作
- push:データを積む
- pop:データを取り出す(最後のデータから)
図にすると、まさに“積み上がる箱”のようなイメージになります。
◆ LIFOの仕組み(イメージ)
データの流れ:
push → A
push → B
push → C
pop → C(最初に出る)
pop → B
pop → A(最後に出る)
このように、「逆順で取り出される」ことが特徴です。
◆ LIFOが使われる主な場面
● 1. プログラミング言語の関数呼び出し(コールスタック)
関数A → 関数B → 関数C
と呼び出された場合、
戻る順序は C → B → A の逆順になります。
これはまさに LIFO動作です。
● 2. Undo(元に戻す)機能
テキストエディタや画像編集ソフトの「Ctrl + Z」もLIFO。
最後に行った操作から順に元に戻ります。
● 3. 深さ優先探索(DFS)
DFSは「最後に訪れたノードから探索を続ける」ため、
内部ではスタック(LIFO)が利用されます。
● 4. 式の評価(計算処理)
数学式をプログラムで処理する際、
値や演算子をスタックに積みながら処理します。
● 5. ブラウザの履歴
Webページを移動した際の「戻る」もLIFO。
最後に開いたページから戻ります。
◆ LIFOのメリット
● 1. 実装がシンプル
push と pop の2つの操作が中心。
● 2. 高速
操作がO(1)で行えるのが一般的。
● 3. 再帰処理に相性がいい
処理の流れを記録するのに適している。
◆ LIFOのデメリット
- 真ん中のデータにアクセスしにくい
- データを順番にしか取り出せない
- ランダムアクセスには向かない
大量データを並列処理するような場合には不向きですが、
「最後に積んだものを優先して取り出す」という用途には最適です。
◆ LIFOとFIFOの違い
| 種類 | 動作 | 実例 | データ構造 |
|---|---|---|---|
| LIFO | 最後に入れたものが最初に出る | 皿のスタック、Undo | スタック |
| FIFO | 最初に入れたものが最初に出る | 行列の順番、メッセージキュー | キュー |
◆ まとめ:LIFOはシンプルで強力なデータ管理方式
LIFOは、
- 最後に入れたデータが最初に取り出される
- スタックで実現される
- コールスタック・Undo機能・ブラウザ履歴など多くの場面で使用
- シンプルで高速な仕組み
という特徴を持つ、データ処理やプログラム内部で非常に重要な概念です。


