アルゴリズムとプログラミング

基本情報技術者試験容量 4 の循環キュー(リングバッファ)を配列 buf[1..4] で実装する。head…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:hard
容量 4 の循環キュー(リングバッファ)を配列 buf[1..4] で実装する。head は次に取り出す位置、tail は次に入れる位置で、初期は head=1, tail=1, 個数 cnt=0。enq は buf[tail] に格納し tail を 1 進め(4 の次は 1 に戻る)cnt を +1、deq は buf[head] を返し head を 1 進め cnt を −1 する。空の状態から次を実行したあとの (head, tail, cnt) の組はどれか。
○手続: run()
  enq(11)
  enq(22)
  enq(33)
  deq()
  enq(44)
  enq(55)
  deq()
(head,tail,cnt)=(2,1,4)
(head, tail, cnt) = (1, 2, 3)(巡回未反映)
(head, tail, cnt) = (3, 2, 3)
(head, tail, cnt) = (3, 1, 2)
正解
ウ.(head, tail, cnt) = (3, 2, 3)

enq で tail が進み、deq で head が進む。いずれも 4 の次は 1 に戻る。操作を順に追うと head=3、tail=2、cnt=3 に到達するため ウが正しい。

?選択肢ごとの解説

ア ×deq を 1 回しか反映せず cnt を 4 のままにし、head・tail も 1 つずつずらした誤りである。
イ ×巡回(4 の次が 1)を反映せず head・tail を初期付近に留めた、ラップアラウンドの見落としである。
ウ ○enq で tail が進み、deq で head が進む。いずれも 4 の次は 1 に戻る。操作を順に追うと head=3、tail=2、cnt=3 に到達するため ウが正しい。
エ ×cnt の増減を取り違え、enq と deq の回数差を 2 と誤って cnt=2 とした計数の誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0107

【基本情報技術者試験】容量 4 の循環キュー(リングバッファ)を配列…|正解「(head, tail,…」|ukamiru 過去問