スタック構造
よみかた:すたっくこうぞう
概要
最後に入れたものが、最初に出てくるという仕組みのデータ構造。
後入れ先だし、「LIFO(Last In, First Out)」とも呼ばれる。
ポイント
- 「上に積む(push)」「上から取る(pop)」が基本操作
- 戻るボタン、Undo、ブラウザ履歴などにも使われる
- 順番どおりに処理したいときには便利だが、途中のデータを取り出すのは苦手
体験してみよう①【日常編】
色の違うお皿を重ねてみよう!
→ 後から置いたものから取る!=スタック構造の仕組みと同じ!
- 最初に青いお皿を置く
- その上に赤いお皿を置く
- 一番上の赤いお皿から先に取る
体験してみよう②【実務編】
下のボタンを押して、スタックの「後入れ先出し」を体験してみよう!
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
で「一番上=最後に積んだやつ」が出てくる
関連用語・比較
スタック構造とは、「積み重ねて、上から取り出す」ルールのこと。
シンプルだけど、Undo・履歴・メモリ処理などいろんな場面で大活躍!
シンプルだけど、Undo・履歴・メモリ処理などいろんな場面で大活躍!