先入れ先出し(FIFO:First-In First-Out)。最初に入れたものが最初に出る。 イメージは「行列(待ち行列)」。
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 を取り出しキューへ | a | b |
| enq(c) | c をキューへ | a | b, c |
| push(d) | d を積む | a, d | b, c |
| push(deq()) | キュー先頭 b を積む | a, d, b | c |
| x ← pop() | スタック上 b を取り出す | a, d | c |
正解:イ(b)
スタック(縦積み)とキュー(横列)を紙に並べて1行ずつ追うのが確実(上のトレース表)。
▼速解法:pop はスタックの上、deq はキューの先頭。取り出す位置を取り違えないこと。
Q3 ★enq/deq のトレース
空のキューに対し、次の操作を順に行う。取り出される(deq される)順はどれか。
enq(1), enq(2), deq, enq(3), deq, deq
| 操作 | キュー(左が先頭) | 出力 |
|---|---|---|
| enq(1) | 1 | |
| enq(2) | 1, 2 | |
| deq | 2 | 1 |
| enq(3) | 2, 3 | 1 |
| deq | 3 | 1, 2 |
| deq | (空) | 1, 2, 3 |
Q4 ★スタックとキューの出力の違い
1, 2, 3 の順に入れたあと、3回続けて取り出す。スタックとキューそれぞれの出力の組み合わせとして正しいものはどれか。
正解:ウ
この「同じ入力でも出力が逆になる」対比が、スタックとキューを見分ける決め手。
▼ 解説つきの類題を探す:過去問道場・分野別「データ構造」