ITパスポート 2018年 春期 問96
問題文
先入れ先出し(First-In First-Out, FIFO)処理を行うのに適したキューと呼ばれるデータ構造に対して“8”、 “1”、 “6”、 “3”の順に値を格納してから、取出しを続けて2回行った。2回目の取出しで得られる値はどれか。
選択肢
ア:1(正解)
イ:3
ウ:6
エ:8
🔒 解説は解答すると表示されます
先入れ先出し(FIFO)処理とキュー【ITパスポート 解説】
正解の理由
問題は「キュー」と呼ばれるデータ構造に対して、“8”、“1”、“6”、“3”の順に格納(追加)してから、取り出しを2回行ったときの2回目の取り出し結果を問うています。
キューは FIFO(First-In First-Out:先に入れたものが先に出る)という性質を持ちます。したがって、追加した順番通りに取り出されます。追加順は 8 → 1 → 6 → 3 ですから、1回目の取り出しで 8、2回目の取り出しで 1 が出ます。よって ア(値 1)が正しい選択肢です。
キューは FIFO(First-In First-Out:先に入れたものが先に出る)という性質を持ちます。したがって、追加した順番通りに取り出されます。追加順は 8 → 1 → 6 → 3 ですから、1回目の取り出しで 8、2回目の取り出しで 1 が出ます。よって ア(値 1)が正しい選択肢です。
解法ステップ
-
用語の確認
- キュー(queue):待ち行列のように、先に入れた要素が先に出るデータ構造。
- FIFO(First-In First-Out:先入れ先出し):先に入れたものが先に出るルール。
- enqueue(エンキュー、追加):キューに値を入れる操作。
- dequeue(デキュー、取り出し):キューから値を取り出す操作。
-
問題の操作を順に追う
- enqueue 8 → キュー状態: [8] (先頭が左)
- enqueue 1 → キュー状態: [8, 1]
- enqueue 6 → キュー状態: [8, 1, 6]
- enqueue 3 → キュー状態: [8, 1, 6, 3]
-
取り出し(dequeue)を2回行う
- 1回目の dequeue → 取り出されるのは先頭の 8。キューは [1, 6, 3] になる。
- 2回目の dequeue → 取り出されるのは次の先頭 1。
-
結論:2回目の取り出しで得られる値は 1(ア)。
選択肢別の誤答解説
-
ア(1)
正しい。上の通り、追加順に従って2回目に 1 が出ます。ア と明示的に一致します。 -
イ(3)
間違い。3 は最後に追加した要素なので、FIFO のキューでは一番最後に取り出されます。2回目ではまだ出ません。 -
ウ(6)
間違い。6 は3番目に追加された要素です。2回目の取り出しは2番目に追加された 1 が出るため、6 はまだ残っています。 -
エ(8)
間違い。8 は最初に追加された要素で、1回目の取り出しで既に取り出されています。したがって2回目には出ません。
よくある誤解
-
「値の大小や並び替えで決まる」と考える
値の大きさ(8が最大など)や数字の大小は関係ありません。キューは「入れた順番」を保持するだけです。 -
スタック(LIFO)と混同する
スタックは LIFO(Last-In First-Out:後に入れたものが先に出る)という性質を持ちます。最後に入れた 3 を先に取り出すのがスタックの動作で、キューとは逆です。これを混同すると誤答しやすいです。 -
取り出し回数の数え間違い(オフ・バイ・ワン)
「最初の取り出し=0回目」と数えるなどで、何回目にどれが出るかを間違えることがあります。1回目・2回目を正しく数えましょう。
補足コラム
- 日常の例え:スーパーのレジの列を想像してください。先に並んだ人から順に会計を済ませます。これがキュー(FIFO)です。
- キューの用途例:プリンタへの印刷ジョブの管理、ネットワークのパケット処理、タスクの順序管理など。
- 実装のポイント:配列や連結リストで実装できます。配列で実装するときは「先頭」「末尾」を巡回させる環状(サーキュラー)キューにすると効率的です。
FAQ
Q1. スタックとキュー、どちらを使えばいいですか?
A1. 問題の性質で選びます。処理順が「最後に入れたものから処理したい」ならスタック(LIFO)を使い、「先に入れたものから順に処理したい」ならキュー(FIFO)を使います。
A1. 問題の性質で選びます。処理順が「最後に入れたものから処理したい」ならスタック(LIFO)を使い、「先に入れたものから順に処理したい」ならキュー(FIFO)を使います。
Q2. キューから全部取り出すと元の順になる?
A2. はい。全要素を順に dequeue すると、追加した順と同じ順で取り出されます。
A2. はい。全要素を順に dequeue すると、追加した順と同じ順で取り出されます。
Q3. 「enqueue」と「dequeue」はどのように発音・意味しますか?
A3. enqueue(エンキュー)は「追加」、dequeue(デキュー)は「取り出し」を意味します。英語の操作名をそのまま使うことが多いです。
A3. enqueue(エンキュー)は「追加」、dequeue(デキュー)は「取り出し」を意味します。英語の操作名をそのまま使うことが多いです。
関連キーワード: FIFO、先入れ先出し、キュー、queue、enqueue、dequeue、LIFO、スタック、データ構造、待ち行列

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

