Skip to the content.

最終更新日:2026年8月9日

まず結論

スタックとキューの違いは、データを入れた順番と、取り出す順番の関係です。

最後に入れたデータから取り出す
→ スタック(LIFO:後入れ先出し)

最初に入れたデータから取り出す
→ キュー(FIFO:先入れ先出し)

FE試験では、用語だけを暗記するより、「どのデータが次に取り出されるか」を見ると判断しやすくなります。

迷ったら、A、B、Cの順に入れたときに、最初に何が出るかを考えます。

  • Cが出る → スタック
  • Aが出る → キュー

個別の仕組みを先に確認したい場合は、スタックとは?キューとは? を読むと整理しやすくなります。

直感的な説明

スタックは、積み重ねた皿のイメージです。

A、B、Cの順に皿を重ねたら、一番上にあるCから取ります。

入れる順番:A → B → C
取り出す順番:C → B → A

キューは、レジの順番待ちのイメージです。

Aさん、Bさん、Cさんの順に並んだら、先頭のAさんから会計します。

入れる順番:A → B → C
取り出す順番:A → B → C

つまり、両者の違いは「データを保存できるか」ではありません。

保存したデータを、どの順番で取り出すかが違います。

定義・仕組み

まずは、よく出てくる操作名を日本語と対応させます。

操作の意味 スタックでの呼び方 キューでの呼び方
データを入れる・追加する push(プッシュ) enqueue(エンキュー)
データを取り出す pop(ポップ) dequeue(デキュー)

pushenqueue という英単語だけで覚える必要はありません。

試験中は、次のように日本語へ置き換えて読むと分かりやすくなります。

push / enqueue
→ データを入れる

pop / dequeue
→ データを取り出す

ただし、入れる場所・取り出す場所が違います。

見るポイント スタック キュー
基本ルール 後入れ先出し 先入れ先出し
略称 LIFO FIFO
データを入れる 一番上に追加する 列の後ろに追加する
データを取り出す 一番上から取り出す 列の前から取り出す
操作名 push / pop enqueue / dequeue
イメージ 積み重ねた皿 レジの順番待ち

同じA、B、Cを入れるとどうなる?

スタックでは、A、B、Cの順に入れると、最後に入れたCから取り出します。

push(A) → [A]
push(B) → [A, B]
push(C) → [A, B, C]

pop() → C
pop() → B
pop() → A

キューでは、A、B、Cの順に入れると、最初に入れたAから取り出します。

enqueue(A) → [A]
enqueue(B) → [A, B]
enqueue(C) → [A, B, C]

dequeue() → A
dequeue() → B
dequeue() → C

この違いが分かれば、LIFO・FIFOという英字を忘れても判断できます。

このテーマは、基本情報技術者試験のデータ構造やアルゴリズムと関係します。公式の出題範囲は、IPA:基本情報技術者試験 から確認できます。

科目Aでどう出る?

科目Aでは、説明文からスタックかキューかを選ぶ問題があります。

判断するときは、先に入れたデータと、後から入れたデータのどちらを先に使うかを見ます。

説明 判断
最後に格納したデータから取り出す スタック
関数呼出しから戻る順番を管理する スタック
計算途中の値を積み、最後に積んだ値から使う スタック
到着した順番に処理する キュー
受付順に処理する キュー
最初に格納したデータから取り出す キュー

試験中は、次の一問で切り分けると安定します。

後から来たデータが先に出る? それとも先に来たデータが先に出る?

後から来たものが先
→ スタック

先に来たものが先
→ キュー

pushpopenqueuedequeue が出ても、英単語の意味に迷ったら、入れる処理か、取り出す処理かへ日本語で読み替えます。

科目Bでどう使う?

科目Bでは、操作を一つずつ実行し、その時点で中に何が残っているかを追うことが大切です。

スタックを追う

push(3)
push(7)
pop()
push(5)
pop()

順番に追うと、次のようになります。

操作 中の状態 取り出した値
3を入れる [3] -
7を入れる [3, 7] -
取り出す [3] 7
5を入れる [3, 5] -
取り出す [3] 5

スタックでは、最後に入れた値が次に出ることを確認します。

キューを追う

enqueue(3)
enqueue(7)
dequeue()
enqueue(5)
dequeue()
操作 中の状態 取り出した値
3を入れる [3] -
7を入れる [3, 7] -
取り出す [7] 3
5を入れる [7, 5] -
取り出す [5] 7

キューでは、最初に入れた値が次に出ることを確認します。

科目Bでは、操作名だけを頭の中で追うより、

何を入れた?
↓
今、中に何がある?
↓
次に何が出る?

の3点を小さな表にすると安全です。

スタックを使う関数呼出しや途中結果の保存まで学びたい場合は、スタックとは? に進むと理解がつながります。キューの frontrear などを詳しく確認したい場合は、キューとは? が次の学習先です。

よくある誤解・混同

LIFOとFIFOの英字を逆に覚える

英字だけで暗記すると混乱しやすいです。

まず日本語で、

スタック
→ 後から入れたものが先に出る

キュー
→ 先に入れたものが先に出る

と理解してから、LIFO・FIFOを対応させる方が安全です。

pushとenqueueは全く別の意味

どちらも大きく言えば、データを入れる操作です。

違うのは、どのデータ構造へ、どの位置に入れるかです。

  • push → スタックの一番上へ入れる
  • enqueue → キューの後ろへ入れる

popとdequeueは全く別の意味

どちらも、データを取り出す操作です。

  • pop → スタックの一番上から取り出す
  • dequeue → キューの前から取り出す

一時保存なら必ずスタック

保存するだけでは判断できません。

重要なのは、どの順番で取り出すかです。

  • 最後に保存したものから使う → スタック
  • 最初に保存したものから使う → キュー

まとめ(試験直前用)

  • スタックは 後入れ先出し(LIFO)、キューは 先入れ先出し(FIFO)
  • A→B→Cと入れて、Cから出るならスタック、Aから出るならキュー
  • pushenqueue は「データを入れる」、popdequeue は「データを取り出す」と読み替える
  • 科目Aでは「どの順番で取り出すか」で切り分ける
  • 科目Bでは「今、中に何があるか」を操作ごとに書いて追う

© 2024-2026 stemtazoo. All rights reserved.