待ち行列に対する操作を,次のとおり定義する。
ENQ n:待ち行列にデータnを挿入する。
DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し,ENQ 1,ENQ 2,ENQ 3,DEQ,ENQ 4,ENQ 5,DEQ,ENQ 6,DEQ,DEQの操作を行った。
次にDEQ操作を行ったとき,取り出される値はどれか。
正答3
解説
正解は3です。
この問題は、待ち行列(キュー)の動作をたどれるかを問うています。
待ち行列はFIFO(First In First Out:先入れ先出し)で、先に入れたデータから順に取り出されます。
【操作の流れ】
ENQ 1、ENQ 2、ENQ 3の後、待ち行列の中身は先頭から1、2、3です。
DEQで先頭の1が取り出され、2、3が残ります。
ENQ 4、ENQ 5の後は2、3、4、5です。
DEQで2が取り出され、3、4、5が残ります。
ENQ 6の後は3、4、5、6です。
DEQで3が取り出され、4、5、6が残ります。
DEQで4が取り出され、5、6が残ります。
次のDEQでは先頭の5が取り出されます。
【選択肢別解説】
1:× 1は最初のDEQで既に取り出されています。
2:× 2は2回目のDEQで既に取り出されています。
3:○ 4回のDEQの後に残っているのは5と6で、先頭は5です。
FIFOなので次に取り出されるのは5です。
4:× 6は最後に入れたデータなので、次に取り出されるのは5の後です。
6が取り出されるとするのは、後入れ先出しのスタックと取り違えた場合です。
【ポイント】
待ち行列(キュー)はFIFO、スタックはLIFO(Last In First Out:後入れ先出し)です。
操作ごとに中身を書き出すと、取り違えを防げます。