スタック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)とも呼ばれます。
もっと、「スタック」について調べてみよう。
戻る
一覧へ
次へ
|