教育・資格支援

スタックとキューの違いを図解でわかりやすく解説【LIFO/FIFO】

結論:スタック=後入れ先出し(LIFO)、キュー=先入れ先出し(FIFO)。データの出し入れの順序が真逆

スタックは「最後に入れたものを最初に取り出す」構造、キューは「最初に入れたものを最初に取り出す」構造です。
どちらもデータを一時的にためておく入れ物ですが、出し入れの順番だけが逆になっています。
この「順序が真逆」というイメージさえ掴めば、試験でどちらか迷うことはもうありません。本記事では仕組み・具体例・練習問題まで3分で押さえられるよう整理しました。

今回は、ITパスポートと基本情報技術者試験で頻出のデータ構造、「スタック」と「キュー」の違いを、仕組みからやさしく解説していきます。

「LIFOとFIFO、どっちがどっちか分からなくなる」「操作の名前まで覚えきれない」——データ構造を学び始めた方から本当によく聞く悩みです。でも、出し入れの順序のイメージさえ掴めれば、もう試験で迷うことはありません。3分で完了するので、サクッといきましょう。

この記事でわかること

・スタック(LIFO)とキュー(FIFO)の仕組みと違い
・それぞれの具体例(皿の重ね置き・レジの行列など)
・図解で「出し入れの順序」をひと目で理解
・試験で確実に1点取るための練習問題3問
・実務(コールスタック・BFSなど)での使われ方


1. スタック(Stack)とは


仕組み

スタックとは、最後に入れたデータを最初に取り出すデータ構造です。この出し入れの順序をLIFO(Last In First Out:後入れ先出し)と呼びます。

ポイントは「出入り口が1つしかない」こと。データを積み上げていき、取り出すときは一番上(=最後に積んだもの)からしか取れません。データを積む操作をpush(プッシュ)、一番上を取り出す操作をpop(ポップ)と呼びます。


具体例

机の上に皿を重ねて置いていく様子をイメージしてください。皿を上へ上へと重ねていき(push)、使うときは一番上の皿から取ります(pop)。下のほうにある皿を先に取ろうとすると、上の皿が崩れてしまいますよね。

身近なソフトの動作でいえば、ブラウザの「戻る」ボタンや、文書編集の「元に戻す(Undo)」がまさにスタックです。直前の操作から順にさかのぼって取り消していく——「最後にやったことから戻す」という動きが、後入れ先出しそのものです。


講師視点|スタックの誤解と混同ポイント

僕が初学者に説明する際は、以下のような比喩で伝えています。

ポイント

・積み重ねた皿やお盆(一番上からしか取れない)
・ブラウザの「戻る」ボタン(直前に見たページへさかのぼる)
・文書編集のUndo(最後の操作から順に取り消す)

「スタック=データを整列して並べておくもの」という誤解をする方が結構多い印象があります。

スタックは並び替えのための構造ではなく、あくまで取り出す順番が「後入れ先出し」に固定される入れ物、という点を押さえておきましょう。

ユウイチ
ユウイチ
スタックは後入れ先出し!

2. キュー(Queue)とは


仕組み

キューとは、最初に入れたデータを最初に取り出すデータ構造です。この出し入れの順序をFIFO(First In First Out:先入れ先出し)と呼びます。

スタックと違い、キューは入り口と出口が別々にあります。片方の端からデータを入れ、反対側の端から取り出す——だから入れた順番がそのまま取り出す順番になります。データを入れる操作をenqueue(エンキュー)、取り出す操作をdequeue(デキュー)と呼びます。


具体例

スーパーのレジの行列をイメージしてください。先に並んだ人から順にレジを通っていき、後から来た人は列の最後尾に付きます。割り込みがなければ、並んだ順にきちんと処理される——これがキューです。

コンピュータの身近な例では、印刷ジョブが分かりやすいです。複数の印刷指示を出すと、送信した順に1つずつ印刷されていきます。「来た順に、公平にさばく」という動きが先入れ先出しそのものです。


講師視点|「キュー=順番待ちの列」の方向感をつかむコツ

僕が初学者に説明する際は、以下のような比喩で伝えています。

ポイント

・スーパーやATMの順番待ちの行列(先に並んだ人から順に)
・プリンターの印刷ジョブ(送信した順に印刷される)
・遊園地のアトラクションの待機列(割り込みなしで先頭から)

「キュー」という言葉自体が英語で「順番待ちの列」を意味します。

後から入れたものが先に出ると誤解する初学者がいますが、それはスタックの動き。キューは「並んだ順に出ていく」列。という方向感を持ちましょう!

ユウイチ
ユウイチ
キューは並んだ順に出ていく列だよ

3. スタックとキューの違い【図解+比較表】

2つの違いを、まずは出し入れの流れを対比した図で確認しましょう。

表でも整理しておきましょう。

項目スタック(Stack)キュー(Queue)
出し入れの順序LIFO(後入れ先出し)FIFO(先入れ先出し)
出入り口1つ(同じ端で出し入れ)2つ(入口と出口が別)
操作名push(入れる) / pop(取り出す)enqueue(入れる) / dequeue(取り出す)
身近な例皿の重ね置き・ブラウザの戻る・Undoレジの行列・印刷ジョブ
主な用途関数呼び出し・式評価・Undoタスク処理・BFS・バッファ

ポイント

・同じ「データをためる入れ物」でも、後入れ先出しはスタック、先入れ先出しはキュー
・スタック=push/pop、キュー=enqueue/dequeue、と操作名もセットで覚える
・出入り口の数が違う(スタック:1つ vs キュー:2つ)

後入れ先出しはスタック、先入れ先出しはキュー」という対応を覚えておくと、応用問題でもブレません。


4. 試験対策|練習問題で確認しよう

以下は、IPA過去問の傾向を踏まえて作成したオリジナルの練習問題です(IPA公式の過去問そのものではありません)。本番形式に慣れるための練習として活用してください。実際の過去問はIPA公式サイトで公開されています。


練習問題①(ITパスポートレベル)

(問題) 最後に格納したデータが最初に取り出されるデータ構造はどれか。

ア.キュー
イ.配列
ウ.スタック
エ.リスト

👉 正解:ウ(スタック)

解説:「最後に格納したデータが最初に取り出される」=LIFO(後入れ先出し)がキーワード。キュー(ア)は先入れ先出し(FIFO)なので逆、配列(イ)は添字で任意の位置にアクセスする構造、リスト(エ)は要素を数珠つなぎにした構造なので、出し入れの順序を固定するスタックが正解です。


練習問題②(基本情報レベル)

(問題) 空のスタックに対し、push(1)、push(2)、push(3)、pop、push(4)、pop、pop の順に操作を行った。この後にもう一度 pop を実行したとき、取り出される値はどれか。

ア.1
イ.2
ウ.3
エ.4

👉 正解:ア(1)

解説:順に追うと、push(1)(2)(3)でスタックは下から[1,2,3]。1回目のpopで一番上の3が出て[1,2]。push(4)で[1,2,4]。2回目のpopで4が出て[1,2]。3回目のpopで2が出て[1]。残っているのは1だけなので、次のpopで取り出されるのは1です。後入れ先出しを一つずつ丁寧に追うのがコツです。


練習問題③(混同しやすいポイント)

(問題) 次のうち、キューの説明として最も適切なものはどれか。

ア.最後に入れた要素から順に取り出す、後入れ先出しのデータ構造
イ.最初に入れた要素から順に取り出す、先入れ先出しのデータ構造
ウ.添字(インデックス)を指定して任意の位置の要素へ直接アクセスできるデータ構造
エ.各要素が次の要素への参照を持ち、数珠つなぎに連結されたデータ構造

👉 正解:イ

解説:アはスタック(LIFO)、ウは配列、エは連結リストの説明です。「最初に入れた要素から」「先入れ先出し」という表現を見たら、キューと判断できればOKです。紛らわしい配列・リストと混ざらないよう、「出し入れの順序が決まっているのがスタック・キュー」と押さえておきましょう。


5. 実務ではどう使われている?

試験対策だけでなく、現場でも土台として頻繁に登場するデータ構造です。

スタックは、プログラムの関数呼び出しの管理(コールスタック)で使われます。関数が別の関数を呼ぶたびに情報が積まれ、処理が終わると上から戻っていく仕組みです。ほかにも計算式の評価や、アプリのUndo機能の内部でも活躍します。

キューは、順番に処理したいタスクの管理と相性が抜群です。Webサーバーへのリクエスト処理や、グラフを幅優先で探索するBFS(幅優先探索)、データを一時的にためるバッファなど、「来た順にさばく」場面で幅広く使われています。クラウドのメッセージキューサービスも、内部の考え方はこのFIFOそのものです。


6. まとめ|一言で覚えるポイント

ポイント

・スタック=後入れ先出し(LIFO)、操作はpush/pop
・キュー=先入れ先出し(FIFO)、操作はenqueue/dequeue
・後入れ先出しはスタック、先入れ先出しはキューで分担

ITパスポートや基本情報の試験では、「LIFOはスタック、FIFOはキュー」さえ押さえておけば確実に1点取れる定番問題です。科目B(アルゴリズム)では、push/popを一つずつ追う操作トレース問題も出るので、練習問題②のように手を動かして順序を確認する練習をしておくと安心です。

それではまた!

一人で悩まず、相談しながら合格を目指したい方へ

「独学だと続かない…」「分からない用語を気軽に質問できる人が欲しい…」
そんな方向けに、エンジニア歴20年・現役講師の僕が運営する無料LINEコミュニティを用意しています。資格学習のコツ・勉強法・キャリア相談まで、気軽に質問できる場所です。

▶ ITキャリアラボに参加する(無料)

ITキャリアラボ

【無料】ITの悩みを気軽に相談できるコミュニティ・ITキャリアラボ

IT業界を目指すあなたへ|「ITキャリアラボ」無料コミュニティのご案内 「IT業界に転職したいけど、何から始めればいいかわからない…」「資格の勉強が続かない…」「相談できる人がいない…」 そんな不安、 ...

続きを見る

  • この記事を書いた人
  • 最新記事

ユウイチ

20年間ソフトウェアエンジニアとして働いた後、フリーランスを経て現在は1人社長として活動。 プログラミング講師やIT教育を中心に活動しながら、趣味でゲーム開発やシナリオ作成にも挑戦中。どちらも「創ることを通じて人を笑顔にしたい」という想いから始めた、大切なライフワーク。 「創造と教育で、人生に迷う人の“自由な一歩”を支援」を理念に発信中。

-教育・資格支援