ITパスポート 2011年 春期 問58
問題文
あるキューに要素“33”、要素“27”及び要素“12”の三つがこの順序で格納されている。このキューに要素“45”を追加した後に要素を二つ取り出す。2番目に取り出される要素はどれか。
選択肢
ア:12
イ:27(正解)
ウ:33
エ:45
🔒 解説は解答すると表示されます
キューの取り出し順【ITパスポート 解説】
正解の理由
問題では「キュー(待ち行列、Queue:先に入れたものが先に出るデータ構造)」に要素が順に“33”、“27”、“12”と格納されているとあります。キューは FIFO(First In, First Out:先入れ先出し)方式です。つまり先に入った“33”が最初に取り出され、その次に入っていた“27”が2番目に取り出されます。したがって2番目に取り出される要素は イ の“27”です。
解法ステップ
- 初期のキューの順番を確認します。先頭(先に入った方)から順に:
- 33 → 27 → 12
- 新しい要素“45”を追加します(キューの末尾に追加)。
- 33 → 27 → 12 → 45
- 要素を二つ取り出します(先頭から取り出す)。
- 1回目取り出し:33(取り出した後のキューは 27 → 12 → 45)
- 2回目取り出し:27(ここが問題の答え)
- したがって、2番目に取り出されるのは イ の“27”です。
選択肢別の誤答解説
- ア: 12
理由:12は最初に格納された順では最後(末尾)に近い位置にあるため、2回の取り出しではまだ先頭に来ません。誤りです。 - イ: 27
理由:33が最初に取り出され、その次に27が取り出されます。これが正解です。 - ウ: 33
理由:33は1回目に取り出される要素です。問題は「2番目」を問うているためウは不正解です。 - エ: 45
理由:45は最後に追加された要素で末尾にあります。2回取り出すだけではまだ取り出されません。誤りです。
よくある誤解
- 「順序が書かれている=後ろが先頭」と誤解する:問題文の順序は通常「先に格納された順」なので、最初に書かれているものが先頭(最初に出る)です。文の読み違いに注意してください。
- キューとスタックを混同する:スタック(Stack:後入れ先出し、LIFO)は最後に入れたものが先に出ます。キューは逆です。問題文が「キュー」と明示している場合は FIFO を使います。
- 追加操作の位置を間違える:キューへの追加(enqueue)は末尾(rear)に行います。先頭(front)に追加すると動作が変わります。
補足コラム
キューは日常の「列(行列)」に例えると分かりやすいです。列に並んだとき、先に並んだ人が先に窓口に行けますね。これが FIFO の考え方です。コンピュータの世界では、プリンタの印刷待ち(スプーリング)、ネットワークのパケット処理、OS のジョブキューなどで使われます。逆に、スタックは皿を重ねるイメージで、最後に置いた皿を最初に取る方式です(LIFO)。
基本用語:
- エンキュー(enqueue):キューに要素を追加する操作。
- デキュー(dequeue):キューから要素を取り出す操作。
- FIFO(First In, First Out:先入れ先出し)
FAQ
Q1. 「33、27、12の順序」は前からの順ですか?
A1. はい。普通は記載されている順が「先に格納された順(先頭に近い)」です。問題文の解釈が不明な場合は「キューは先に入れたものが先に出る」と考えてください。
A1. はい。普通は記載されている順が「先に格納された順(先頭に近い)」です。問題文の解釈が不明な場合は「キューは先に入れたものが先に出る」と考えてください。
Q2. もし要素を3回取り出したらどうなりますか?
A2. 1回目 33、2回目 27、3回目 12 が取り出されます。追加した45は4回目で取り出されます。
A2. 1回目 33、2回目 27、3回目 12 が取り出されます。追加した45は4回目で取り出されます。
Q3. キューに追加するときは必ず末尾ですか?
A3. 基本的なキューでは末尾(rear)に追加します。両端から追加・削除できる双方向キュー(Deque:デック/ディーク)は別の構造です。
A3. 基本的なキューでは末尾(rear)に追加します。両端から追加・削除できる双方向キュー(Deque:デック/ディーク)は別の構造です。
関連キーワード: キュー、FIFO、待ち行列、データ構造、エンキュー、デキュー、スタック、LIFO、アルゴリズム、順序理解

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

