03 キュー(queue)

【知識】

先入れ先出し(FIFO:First-In First-Out)。最初に入れたものが最初に出る。 イメージは「行列(待ち行列)」。

enqueue →(末尾に入れる)(先頭から出す)→ dequeue
D
C
B
A
rear(末尾)front(先頭)
最初に入れた A が最初に出る(FIFO)。入口は末尾・出口は先頭。
スタック=LIFO、キュー=FIFO。この対比が最頻出。

【演習】理解度チェック

Q1(H27春 問5)★基本

キューに関する記述として、最も適切なものはどれか。

解説を表示

正解:イ

過去問道場で確認

Q2(H26春 問7)★スタックとキューの複合・頻出

空のキューとスタックがある。関数の定義は次のとおり。
push(y):スタックに積む / pop():スタックから取り出す / enq(y):キューに入れる / deq():キューから取り出す

手続きを順に実行したとき、x に代入されるデータはどれか。

push(a)
push(b)
enq(pop())
enq(c)
push(d)
push(deq())
x ← pop()
▶ トレース表を見る
手続き動作スタックキュー
push(a)a を積むa
push(b)b を積むa, b
enq(pop())b を取り出しキューへab
enq(c)c をキューへab, c
push(d)d を積むa, db, c
push(deq())キュー先頭 b を積むa, d, bc
x ← pop()スタック上 b を取り出すa, dc
解説を表示

正解:イ(b)

スタック(縦積み)とキュー(横列)を紙に並べて1行ずつ追うのが確実(上のトレース表)。

▼速解法:pop はスタックの、deq はキューの先頭。取り出す位置を取り違えないこと。

過去問道場で確認

Q3 ★enq/deq のトレース

空のキューに対し、次の操作を順に行う。取り出される(deq される)順はどれか。

enq(1), enq(2), deq, enq(3), deq, deq
▶ トレース表を見る
操作キュー(左が先頭)出力
enq(1)1
enq(2)1, 2
deq21
enq(3)2, 31
deq31, 2
deq(空)1, 2, 3
解説を表示

正解:ア(1, 2, 3)

deq は必ず「先頭」。入れた順にそのまま出る(FIFO)。

▼ 解説つきの類題を探す:過去問道場・分野別「データ構造」

Q4 ★スタックとキューの出力の違い

1, 2, 3 の順に入れたあと、3回続けて取り出す。スタックキューそれぞれの出力の組み合わせとして正しいものはどれか。

解説を表示

正解:ウ

この「同じ入力でも出力が逆になる」対比が、スタックとキューを見分ける決め手。

▼ 解説つきの類題を探す:過去問道場・分野別「データ構造」


【練習リンク】