スタック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(イ)になる。
【キーワード】
・スタック