---
title: "キューとは？先入れ先出しで考えるデータ構造【基本情報技術者試験】"
description: "キューを先入れ先出しのデータ構造として整理し、スタックとの違い、enqueue・dequeueの動き、科目Bの擬似言語問題での読み方をやさしく解説します。"
last_modified_at: "2026-06-23"
canonical_url: "https://stemtazoo.github.io/fe/queue/"
section: "fe"
---

## まず結論

キューとは、**先に入れたデータから先に取り出す**データ構造です。

基本情報技術者試験では、キューは **FIFO（First In, First Out：先入れ先出し）** として出題されます。

スタックが「最後に入れたものを先に出す」のに対して、キューは「先に並んだものから順番に処理する」と考えると判断しやすいです。

## 直感的な説明

キューは、**順番待ちの列**をイメージすると分かりやすいです。

例えば、レジに並ぶ人を考えます。

- 先に並んだ人から会計する
- 後から来た人は列の後ろに並ぶ
- 途中で順番を飛ばさない

このように、入った順番を守って処理する仕組みがキューです。

英語では、待ち行列のことを **queue** と言います。  
FEでは、この日常的な「列」のイメージを、データ構造として理解できるかが大切です。

## 定義・仕組み

キューは、データを入れる場所と取り出す場所が分かれているデータ構造です。

主な操作は次の2つです。

| 操作 | 意味 |
|---|---|
| enqueue | キューの後ろにデータを入れる |
| dequeue | キューの前からデータを取り出す |

例えば、空のキューに A、B、C の順にデータを入れるとします。

```text
enqueue A → [A]
enqueue B → [A, B]
enqueue C → [A, B, C]
```

この状態で取り出すと、先に入れた A から出てきます。

```text
dequeue → A
dequeue → B
dequeue → C
```

つまり、キューでは **入れた順番と取り出す順番が同じ** になります。

キューは、基本情報技術者試験の「アルゴリズムとプログラミング」や「データ構造」と関係が深いテーマです。公式の出題範囲は、[IPA：基本情報技術者試験](https://www.ipa.go.jp/shiken/kubun/fe.html) から確認できるシラバスで確認できます。

## 科目Aでどう出る？

科目Aでは、キューはデータ構造の基本用語として出やすいです。

特に見るべきポイントは次の3つです。

- キューは FIFO
- 先に入れたデータを先に取り出す
- スタックとは逆の取り出し順になる

選択肢で次のような表現があれば、キューの説明として正しい可能性が高いです。

```text
先に格納したデータから順に取り出す。
```

反対に、次のような表現はスタックの説明です。

```text
最後に格納したデータから順に取り出す。
```

ここを取り違えると、かなり簡単な問題でも落としやすいです。

FEでは、キュー単体の定義だけでなく、**スタックとの違い**で問われることが多いと考えるとよいです。

## 科目Bでどう使う？

科目Bでは、キューという言葉が直接出なくても、**先に入れたものから処理する流れ**として現れることがあります。

例えば、次のような処理です。

```text
未処理のデータを順番に取り出す
処理したいデータを末尾に追加する
先頭のデータから確認する
```

このような処理が出たら、キューの考え方が関係している可能性があります。

科目Bで大切なのは、用語を暗記することよりも、**どこから入れて、どこから取り出しているか** を追うことです。

読むときは、次の順で確認すると整理しやすいです。

1. データを追加している場所を見る
2. データを取り出している場所を見る
3. 取り出し順が「先に入れた順」か確認する

配列でキューを表す問題では、先頭位置や末尾位置を表す変数が出ることもあります。

例えば、`front` が取り出し位置、`rear` が追加位置を表すような形です。

この場合は、変数名を丸暗記するよりも、**どちらが取り出し側で、どちらが追加側か** を処理の流れから確認するのが安全です。

## よくある誤解・混同

キューで一番混同しやすいのは、スタックです。

| 用語 | 取り出し順 | イメージ |
|---|---|---|
| スタック | 後入れ先出し | 積み重ねた皿 |
| キュー | 先入れ先出し | レジの順番待ち |

スタックは **LIFO** です。  
キューは **FIFO** です。

アルファベットだけで覚えると混乱しやすいので、次のように日本語で覚えると安定します。

- スタック：後から入れたものが先に出る
- キュー：先に入れたものが先に出る

また、キューは「優先度付きキュー」と混同することもあります。

通常のキューは、入った順番で処理します。  
一方、優先度付きキューは、順番だけでなく優先度によって取り出すデータが変わります。

FEの基本では、まず通常のキューを **FIFO** として押さえるのが大切です。

## まとめ（試験直前用）

- キューは **先入れ先出し（FIFO）** のデータ構造
- `enqueue` は後ろに入れる、`dequeue` は前から取り出す
- スタックは後入れ先出し、キューは先入れ先出し
- 科目Bでは「どこから入れて、どこから出すか」を追う
- 判断に迷ったら、レジの順番待ちを思い出す
