平成30年度 秋期 午前 問5
データ構造
待ち行列に関する問題
待ち行列に対する操作を,次のとおり定義する。
ENQ n :待ち行列にデータ n を挿入する。 DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し,ENQ 1,ENQ 2,ENQ 3,DEQ,ENQ 4,ENQ 5,DEQ,ENQ 6,DEQ,DEQ の操作を行った。次に DEQ 操作を行ったとき,取り出されるデータはどれか。
- ア1
- イ2
- ウ5
- エ6
答えと解説を見る
✓ これが正解ウ5
解説
先に入れたものから順に出る並びを、丁寧に追いかけます。
待ち行列は、先に入れたデータから先に取り出される仕組みです。挿入は列の後ろに対して、取り出しは列の先頭に対して行われます。操作を順に追うと、1と2と3を入れた時点で列は 1、2、3 の並びです。最初の取り出しで1が出て、4と5を入れると 2、3、4、5 になります。次の取り出しで2が出て、6を入れると 3、4、5、6 です。続く二回の取り出しで3と4が順に出るので、列には 5、6 が残ります。したがって、その次に取り出されるのは先頭にある5です。途中の挿入に惑わされず、出た値を消しながら並びを書き直すのが確実な進め方になります。取り出しは全部で五回あり、出る順は入れた順とそろいます。五回目だけを問われている点に注意します。入れた順を保つ性質は、依頼を受け付けた順に処理したい場面で役立ちます。
ほかの選択肢はなぜ違うのか
- ア1:最初に入れた値で、四回ある取り出しのうち一回目ですでに列から出ています。問われているのは五回目の取り出しなので、同じ値が二度出てくることはありません。取り出し済みの値を消さずに数えると、この誤りに寄ります。
- イ2:二回目の取り出しで列から出た値です。挿入と取り出しが交互に現れるため、どこまで進んだかを見失いやすい配置になっています。操作の回数を数え直すと、残っているのは後半に入れた二つだけだと分かります。入れた順と出る順は同じです。
- エ6:最後に挿入された値なので、列の末尾に置かれています。末尾にある値は、手前の値がすべて出るまで取り出されません。五回目の時点では、まだ手前に5が残っています。積み上げの構造と取り違えても、6ではなく2が出ます。
出典:平成30年度 秋期 基本情報技術者試験 午前 問5
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)