平成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(イ)になる。


キーワード
・スタック

キーワードの解説
  • スタック
    データを一時的に記憶するためにメモリに割り当てる領域のことです。
    データの取り出しを行うとき、取り出されるデータは最後に挿入されたデータになるので、後入れ先出し方式(Last-In First-Out、LIFO)とも呼ばれます。

もっと、「スタック」について調べてみよう。

戻る 一覧へ 次へ