アルゴリズムとプログラミング
基本情報技術者試験 科目A免除 修了試験 20230723 実施分 問5
空の状態のキューとスタックの二つのデータ構造がある。次の手続を順に実行した場合,変数 x に代入されるデータはどれか。ここで,手続で引用している関数は,次のとおりとする。
〔関数の定義〕
push(y):データ y をスタックに積む。
pop():データをスタックから取り出して,その値を返す。
enq(y):データ y をキューに挿入する。
deq():データをキューから取り出して,その値を返す。
〔手続〕
push(a)
push(b)
enq(pop())
enq(c)
push(d)
push(deq())
x ← pop()
答えを選ぶ
出典:基本情報技術者試験 科目A免除 修了試験 20230723 実施分 問5(問題文は IPA の公開問題。解説は当サイト作成)
答えと解説を見る
正解:イ
覚える知識
キューとスタックの操作トレース
スタックは後入れ先出し、キューは先入れ先出しのデータ構造である。
この問題で必要なこと
スタックはLIFO、キューはFIFOとして手続を順に追う。結果は push a,b → pop(b)をenq → enq c → push d → deq(b)をpush → pop で b。
ひっかけ
LIFOとFIFOの取出し順を取り違えると、a・c・dのいずれかを選ばせる。
この知識の出題:本試験系 0 回・免除試験 5 回(公開問題での観測値)