基本情報技術者試験 過去問解説
FIFOとは?基本情報技術者試験 平成26年度 春期 午前 問7を解説
基本情報技術者試験 平成26年度 春期 午前 問7は、FIFOに関する理解を問う問題です。検索から入っても、問題文、選択肢、正解、解説、各選択肢がなぜ違うかをこのページだけで確認できます。
問題文
空の状態のキューとスタックの二つのデータ構造がある。次の手続を順に実行した場合,変数 x に代入されるデータはどれか。ここで,手続で引用している関数は,次のとおりとする。 [関数の定義] push(y):データ y をスタックに積む。 pop():データをスタックから取り出して,その値を返す。 enq(y):データ y をキューに挿入する。 deq():データをキューから取り出して,その値を返す。 [手続] push(a) push(b) enq(pop()) enq(c) push(d) push(deq()) x ← pop()
この問題の出題ポイント
- FIFOの定義だけでなく、問題文中の条件がどの選択肢に当てはまるかを確認する。
- データ構造分野では、用語の目的・主体・責任範囲の違いが選択肢で問われやすい。
- 関連タグ: 数学。
選択肢
- アa
- イb正解
- ウc
- エd
正解
イ: b
解説
スタックは後入先出(LIFO)、キューは先入先出(FIFO)で順を追って状態を更新します。最終的に pop で取り出すのは直前に push した値で、それは deq() で取り出した b です。
なぜ他の選択肢が違うのか
ア
a は最初にスタック底に積まれたまま最後まで取り出されません。
イ(正解)
push(a),(b)後にスタック[a,b]→pop=b→enq(b),enq(c)でキュー[b,c]→push(d)でスタック[a,d]→deq=b→push(b)でスタック[a,d,b]→x=pop=b。
ウ
c は enq(c) でキューに入った2番目の要素で、FIFO の取り出し順では b の後なので今回は取り出されません。
エ
d は push(d) でスタックに積まれましたが、その後に push(b) が積まれたため pop の対象はその上の b になります。
解き方の整理
FIFOの問題では、選択肢のキーワードだけで判断せず、問題文が示す条件と正解選択肢の説明が一致しているかを見ます。誤答選択肢は、似た用語を混ぜる、主体を入れ替える、目的や範囲を広げすぎる、という形で作られることが多いため、選択肢別解説まで確認しておくと復習効率が上がります。
関連問題
前後の問題
平成26年度 春期 午前 の関連する問題
復習を続ける
間違えた問題、苦手タグ、模試履歴を保存して復習する導線を用意しています。広告なしPro、弱点分析、復習リマインダーは段階的に提供予定です。