待ち行列とは、キュー(queue)と呼ばれることも多いデータ構造です。
入出力が繰り返されるデータは、一時的に貯えておくかたちになりますが、
キューは、何かの処理を待たせる際によく使われる構造で
先に入力したデータが先に出力されるという特徴をもっています。(「FIFO」)
たとえば共有プリンタの印刷待ちや、CPUの計算待ちなどがキュー構造で処理されています。
【基本情報技術者試験 平成25年秋】
午前問5
待ち行列に対する操作を,次のとおり定義する。
ENQ n:待ち行列にデータnを挿入する。
DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し,
ENQ1,ENQ2,ENQ3,DEQ,ENQ4,ENQ5,DEQ,ENQ6,DEQ,DEQの
操作を行った。
次にDEQ操作を行ったとき,取り出される値はどれか。
ア.1 イ.2 ウ.5 エ.6
【解説】
待ち行列ですので 先入れ先出し という原則で Qの中身を考えます
① ENQ1,ENQ2,ENQ3,では データの保存になりますので
下記のようなイメージ図になります。
------------------------------
入口 ⇒ 3 2 1 ⇒出口
------------------------------
②DEQ
先に 入ったデータの 取り出しが行われます。
その際 一番先に入ったデータから 取り出されますので
下記のようなイメージで 残ります。
------------------------------
入口 ⇒ 3 2 ⇒ 出口
------------------------------
③ENQ4,ENQ5,DEQ,
4,5の入力の後、2が 取り出されます
------------------------------
入口 ⇒ 5 4 3 ⇒ 出口
------------------------------
④ENQ6,DEQ,DEQ
6を入力後 先の2つのデータの抽出
--------------------------
入口 ⇒ 6 5 ⇒ 出口
--------------------------
⑤次にDEQ操作を行ったとき,取り出される値
一番出口に近い値(先に入力された値)が取り出されます
ので 正答は 5 になります。
【正答】 ウ