アルゴリズムとプログラミング
平成23年度 秋期 基本情報技術者試験 午前 問5
スタック 1,2 があり,図の状態になっている。関数 f はスタック 1 からポップしたデータをそのままスタック 2 にプッシュする。関数 g はスタック 2 からポップしたデータを出力する。b,c,d,a の順番に出力するためには,関数をどの順で実行すればよいか。
スタック 1:4 段のスタック。上から a,b,c,d(d が最下段)。
スタック 2:空の 4 段スタック(点線で段が区切られている)。
- ア f, f, g, f, f, g, g, g
- イ f, f, g, f, g, f, g, g
- ウ f, f, g, f, g, g, f, g
- エ f, f, g, g, f, f, g, g
出典:平成23年度 秋期 基本情報技術者試験 午前 問5
答えと解説を見る
正解:イ
覚える知識
スタックのpush/popトレース
スタックは後入れ先出し(LIFO)のデータ構造である。
この問題で必要なこと
スタック1から取り出してスタック2に積み、後入れ先出しで出力順 b,c,d,a になる操作列をトレースして求める。
ひっかけ
FIFOの感覚で操作列を考えると、出力順序が合わない選択肢を選ぶ。
この知識の出題:本試験系 5 回・免除試験 4 回(公開問題での観測値)