待ち行列に対する操作を,次のとおり定義する。
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、続くDEQで4が取り出され、行列は5、6になります。
次のDEQでは、先頭の5が取り出されます。
【選択肢別解説】
1:× 1は最初のDEQで既に取り出されています。
2:× 2は2回目のDEQで既に取り出されています。
3:○ 4回のDEQのあと先頭に残っているのは5なので、次に取り出されるのは5です。
4:× 6は最後に挿入したデータで、5の後ろにあるため次には取り出されません。
【ポイント】
キューはFIFO、スタックは後に入れたものから出すLIFO(Last In First Out)です。
もしスタックであれば、取り出される順序は大きく変わるので区別して覚えましょう。