戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 秋期 午前(科目A) 問05


問題文

待ち行列に対する操作を、次のとおり定義する。  ENQ :待ち行列にデータを挿入する。  DEQ :待ち行列からデータを取り出す。 空の待ち行列に対し、ENQ 1, ENQ 2, ENQ 3, DEQ, ENQ 4, ENQ 5, DEQ, ENQ 6, DEQ, DEQの操作を行った。次にDEQ操作を行ったとき、取り出される値はどれか。

選択肢

ア:1
イ:2
ウ:5(正解)
エ:6

🔒 解説は解答すると表示されます

待ち行列のENQ/DEQ操作【午前解説】

正解の理由

待ち行列(キュー)はFIFO(先入れ先出し)です。与えられた操作を順に適用すると、最後にキューに残る要素は [5, 6] となり、次のDEQで取り出されるのは先頭の5です。したがって正解は ウ(5)です。

解法ステップ

  1. 空のキューから開始。
  2. ENQ 1 → [1]
  3. ENQ 2 → [1, 2]
  4. ENQ 3 → [1, 2, 3]
  5. DEQ(取り出す) → 1を取り出す、残り [2, 3]
  6. ENQ 4 → [2, 3, 4]
  7. ENQ 5 → [2, 3, 4, 5]
  8. DEQ → 2を取り出す、残り [3, 4, 5]
  9. ENQ 6 → [3, 4, 5, 6]
  10. DEQ → 3を取り出す、残り [4, 5, 6]
  11. DEQ → 4を取り出す、残り [5, 6]
  12. 次のDEQは先頭の5を取り出す(よって答えは5)

選択肢別の誤答解説

  • ア: 1 — 最初のDEQ(4番目の操作)で既に取り出されています。よって不正解です。
  • イ: 2 — 2は7番目(DEQの2回目)で取り出されており、最終状態には残っていません。よって不正解です。
  • ウ: ウ(5) — 正解。上のシミュレーションのとおり、次のDEQで取り出されるのは5です。
  • エ: 6 — 6はキューの二番目に位置しており、次のDEQでは取り出されません。よって不正解です。

よくある誤解

  • DEQを行った回数を見落として、初期のENQがまだ残っていると勘違いする。
  • スタック(LIFO)の振る舞いと混同して、最後に入れた要素が先に出ると思い込む。
  • 各操作後のキュー状態を記録せずに頭の中だけで追おうとして順序を取り違える。

補足コラム

  • 実務やプログラミングではキューのENQ/DEQはO(1) の操作が期待されます(適切なデータ構造を使う場合)。配列実装では循環バッファ(リングバッファ)を使うと効率的です。
  • 本問は「操作列を順に追う」練習問題です。試験対策では操作ごとに紙に書き出すか、左から右へ時系列を書いて状態遷移を確認すると確実です。

FAQ

Q: DEQを空のキューで行ったらどうなる?
A: アンダーフロー(取り出せる要素がない)でエラーになります。試験問題では通常そのような操作は与えられませんが、注意が必要です。
Q: スタックとキュー、どちらを想定すればよい?
A: 本問は「待ち行列(キュー)」なのでFIFOを想定します。問題文の用語(待ち行列, ENQ, DEQ)をまず確認してください。
Q: 途中のDEQがどれを取り出したか忘れたときは?
A: 最初から順にENQ/DEQを紙に書き、各操作の後のキュー状態を明示すると間違いが減ります。

関連キーワード: 待ち行列、キュー、FIFO、ENQ、DEQ、シミュレーション、データ構造、リングバッファ、アルゴリズム、操作列追跡
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について