スタック(stack)

後に入れたデータから先に取り出すデータ構造。出し入れは片方の端だけで行う。

もう少し詳しい説明

スタックは、後に入れたものから先に取り出すデータのしまい方です。

机の上に書類を積み上げていく様子を思い浮かべてください。上へ上へと積んでいき、取るときも一番上から取ります。真ん中の書類を引き抜くことはしません。出し入れするのは、常に一番上だけです。

積んだ順A(最初に積んだ)BC(最後に積んだ)取り出す順3番目2番目1番目
机に書類を積み上げるのと同じで、出し入れは一番上だけです。Cを積んだ後にAを取り出すことはできません。積んだ順の逆に出てくるので、後入先出(LIFO)と呼びます。

この性質を後入先出と呼びます。英語の Last In, First Out から LIFO とも書きます。

積む操作をプッシュ、取り出す操作をポップと呼びます。試験ではこの2語がそのまま問題文に出てきます。

キューとちょうど逆

対になるのがキューです。こちらは先に入れたものから先に出てきます。

スタックキュー
出る順積んだ順の逆入れた順のまま
呼び方後入先出(LIFO)先入先出(FIFO)
触る場所片方の端だけ入口と出口の両端
身近な例積み上げた書類レジの行列

試験では、同じ問題文でどちらかを問う形で出ます。「A、B、C を入れて2回取り出した。次は何か」という問いに、スタックなら A、キューなら C と、ちょうど逆の答えになります。最初に「どちらを聞かれているか」を確かめるのが先決です。

何に使われているのか

積んだ順の逆に出てくる、という性質が役に立つ場面があります。代表が処理の呼び出しと戻りです。

ある処理の途中で別の処理を呼ぶと、「終わったらここへ戻る」という戻り先を覚えておく必要があります。呼び出しが入れ子になるほど、戻り先は増えていきます。

処理Cいま動いている処理BCが終わるのを待つ処理ABが終わるのを待つあとに呼ばれた・先に戻る先に呼ばれた・あとで戻る
処理から処理を呼ぶたびに、戻り先が上に積まれます。終わると上から順に外れ、必ず呼んだ相手へ戻ります。積む場所が尽きると、スタックオーバフローという異常になります。

ここで大事なのは、最後に呼んだ処理が、最初に戻ってくることです。呼んだ順の逆に戻るので、スタックの性質とぴったり合います。だから戻り先はスタックに積まれます。

この積む場所が足りなくなると、スタックオーバフローという異常になります。自分自身を呼ぶ処理(再帰)で、止まる条件を書き忘れたときに起こる代表的な不具合です。

ほかにも、文書編集の「元に戻す」(直前の操作から順に取り消す)や、逆ポーランド表記法の計算などに使われます。どれも**「直前のものから順に」**という共通点があります。

覚え方:積むか、並ぶか

名前を取り違えたときは、動作の絵を思い浮かべるのが確実です。

英単語がそのまま形を表しているので、そこへ戻れば迷いません。

試験ではこう出る

科目A(旧・午前)のアルゴリズム分野で頻出です。多いのは、いくつかのデータをプッシュ・ポップした後に取り出されるデータを答えさせる問題で、キューと並べて出されます。プッシュとポップを交互に混ぜて、途中経過を追わせる形もあります。応用情報や科目Bでは、再帰処理の動きや、逆ポーランド表記法の計算をスタックで追う問題として出ます。

操作が混ざった問題は、紙に縦積みを書いて、1操作ずつ足し引きするのが結局いちばん速く確実です。頭の中だけで追うと、3〜4操作目で必ず崩れます。1行増やすたびに一番上が何かを確かめてください。

関連する用語

キュー
先に入れたものから先に出すしまい方。スタックと対になる
プッシュ・ポップ
スタックに積む操作がプッシュ、取り出す操作がポップ
スタックオーバフロー
積む場所が足りなくなって起きる異常。戻りきれない呼び出しが続くと起こる
再帰
処理が自分自身を呼ぶ書き方。戻り先がスタックに積み上がっていく
計算量
データが増えたときに処理時間がどう伸びるかの指標
逆ポーランド表記法
演算子を後ろに書く式の書き方。スタックがあれば順に計算できる

ミニクイズ

空のスタックに A、B、C の順にデータをプッシュした後、ポップを2回行った。次にポップしたときに取り出されるデータはどれか。

正解は 4番:A

スタックは後入先出(LIFO)なので、取り出される順は積んだ順の逆、つまり C→B→A です。2回ポップした時点で C と B が出ているため、次は A になります。最初に入れた A が最後に出てくる、という点がキューとの決定的な違いです。キューであれば先入先出なので A→B→C の順に出てきて、この問題の答えは C になります。同じ問題文でどちらを問われているかを読み違えると、ちょうど逆の選択肢を選ぶことになるので、まず LIFO か FIFO かを確かめてください。

間違えた用語の復習リストを見る →

最終更新:2026-09-16