問58
頻出度★☆☆
あるキューに要素 “33”, 要素 “27” 及び要素 “12” の三つがこの順序で格納されている。このキューに要素 “45” を追加した後に要素を二つ取り出す。2 番目に取り出される要素はどれか。
この問題の解説と、これまでの解答の記録です。
あるキューに要素 “33”, 要素 “27” 及び要素 “12” の三つがこの順序で格納されている。このキューに要素 “45” を追加した後に要素を二つ取り出す。2 番目に取り出される要素はどれか。
12 は先頭から数えて 3 番目にあるので、3 回目の取り出しで出る要素。2 回の取り出しでは 33, 27 までしか出ないため誤り。
正解 キュー (queue) は FIFO=先入れ先出しのデータ構造で、追加は必ず末尾 (enqueue)、取り出しは必ず先頭 (dequeue) から行う。設問では 33, 27, 12 の順に格納されているので、先頭が 33、次が 27、その次が 12 である。ここに 45 を追加すると末尾に付いて、キューの並びは先頭から 33, 27, 12, 45 となる。この状態から 2 つ取り出すと、1 番目に出るのは先頭の 33、2 番目に出るのは次の 27 になる。よって 2 番目に取り出される要素は 27 で、イ が正解。
33 は最初に格納された先頭要素なので、FIFO では 1 番目に取り出される要素。設問が問うのは 2 番目なので誤り。
45 は最後に追加された要素で、キューの末尾に付く。これを最初に取り出すのはスタック (LIFO=後入れ先出し) の動作であり、キューでは 4 番目 (最後) の取り出しになるため誤り。