平成23年 秋期 基本情報技術者 午前 問5

スタック1、2があり、図の状態になっている。
関数fはスタック1からポップしたデータをそのままスタック2にプッシュする。
関数gはスタック2からポップしたデータを出力する。
b, c, d, aの順番に出力するためには、関数をどの順で実行すればよいか。

 ア  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


答え イ


解説
スタック1の状態からbを出力するには、スタック1の最上位のaを取り出して(ポップ)、スタック2へ入れる(プッシュ)する関数fを行い、次にスタック1の最上になったbを関数fでスタック2へ移動して、関数gでスタック2から出力する。この時のスタックの状態は
 
になる。
同様にcとdを関数fでスタック1からスタック2へ移動して、関数gでスタック2から出力し、最後にスタック2からaを関数gで出力する。
これを、まとめると関数の実行順序はf, f, g, f, g, f, g, g(イ)になる。


キーワード
・スタック

キーワードの解説

戻る 一覧へ 次へ