スタック構造

よみかた:すたっくこうぞう

概要

最後に入れたものが、最初に出てくるという仕組みのデータ構造。
後入れ先だし、「LIFO(Last In, First Out)」とも呼ばれる。

ポイント

  • 「上に積む(push)」「上から取る(pop)」が基本操作
  • 戻るボタン、Undo、ブラウザ履歴などにも使われる
  • 順番どおりに処理したいときには便利だが、途中のデータを取り出すのは苦手

体験してみよう①【日常編】

色の違うお皿を重ねてみよう!
→ 後から置いたものから取る!=スタック構造の仕組みと同じ!

  1. 最初に青いお皿を置く
  2. その上に赤いお皿を置く
  3. 一番上の赤いお皿から先に取る

体験してみよう②【実務編】

下のボタンを押して、スタックの「後入れ先出し」を体験してみよう!

Push(プッシュ)でデータを追加し、
Pop(ポップ)でスタックから一番上のデータを取り出せるよ。

git stashで実践してみよう

Gitでの一時保存コマンド git stash は、まさにスタックそのもの!
ターミナルを開いてgit連携しているテキストエディタ上でgit stash を体験してみよう。

サンプルコマンド

# 作業内容をスタックに積む
git stash
git stash push -m "メッセージ"` - メッセージ付きでstash

# 最後に積んだものを取り出す
git stash pop

# スタックの中身を確認する
git stash list

# 特定のスタックを取り出す
git stash apply stash@{1}
ターミナルの実行結果の例

# UI変更①、②を順にstashに積み、①だけを適用する例

# 作業①をスタックに積む
$ git stash push -m "UI変更①(ボタン位置調整)"
Saved working directory and index state WIP on main: 9abcde1 UI変更①(ボタン位置調整)

# 作業②をスタックに積む
$ git stash push -m "UI変更②(配色調整)"
Saved working directory and index state WIP on main: bcd2345 UI変更②(配色調整)

# スタックの状態を確認
$ git stash list
stash@{0}: WIP on main: bcd2345 UI変更②(配色調整)
stash@{1}: WIP on main: 9abcde1 UI変更①(ボタン位置調整)

# UI変更①を適用する
$ git stash apply stash@{0}
On branch main
Changes not staged for commit:
  (use "git add ..." to update what will be committed)

            

ポイント
- stash するたびに「上に積まれる」
- pop で「一番上=最後に積んだやつ」が出てくる

関連用語・比較

用語名 構造の違い 特徴
スタック 後入れ先出し 「戻る」操作や、一時的な処理に強い
キュー 先入れ先出し 受付や行列のような順番処理に向く
配列(Array) 任意の位置にアクセス可能 特定のデータを直接取り出せる
スタック構造とは、「積み重ねて、上から取り出す」ルールのこと。
シンプルだけど、Undo・履歴・メモリ処理などいろんな場面で大活躍!