アルゴリズムとプログラミング
基本情報技術者試験|容量 4 の循環キュー(リングバッファ)を配列 buf[1..4] で実装する。head…
容量 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 とした計数の誤りである。
アルゴリズムとプログラミングの他の問題
同じ入力列 1, 2, 3, 4 を、(A) スタック(push 後にすべて pop)と (B) キュー(enqueue…スタックに対する push(積む)と…キューに対する enqueue(末尾に追加)と…次の擬似言語は、スタックを用いて文字列中の丸括弧の対応が正しいかを調べ、正しければ "OK"、誤っていれば "NG"…次の擬似言語は、逆ポーランド記法(後置記法)の式をスタックで評価する手続である。トークン列を左から処理し、数値なら…次の擬似言語は、スタックを使って文字型の配列 s を逆順にした文字列を返す手続である。まず全文字を順に push…次の擬似言語は、演算子 + と ×…次の擬似言語は、丸括弧 ( ) と角括弧 [ ]…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0107
