三つのスタックA 、B 、C のいずれの初期状態も[1, 2, 3]であるとき、再帰的に定義された関数f ( )を呼び出して終了した後のB の状態はどれか。
ここで、スタックが[a1, a2,…, an-1]の状態のときにanをpushした後のスタックの状態は[a1, a2,…, an-1, an]で表す。
f ( )
A が空ならば{
何もしない。
}
そうでない場合{
A からpopした値をC にpushする。
f ( )を呼び出し。
C からpopした値をB にpushする。
}
}
ア |
{1, 2, 3, 1, 2, 3} |
|
イ |
{1, 2, 3, 3, 2, 1} |
ウ |
{3, 2, 1, 1, 2, 3} |
|
エ |
{3, 2, 1, 3, 2, 1} |
答え ア
【解説】
この関数の処理はスタックA から全てのデータをpopしてスタックC にpushした後、スタックC にpushしたデータをpopしてスタックB にpushすることになるので、スタックA から全てのデータをpopしてスタックC にpushしたときのスタックC の状態は{3, 2, 1, 1, 2, 3}になり、これからpushしたデータ(3, 2, 1)をpopしてスタックB にpushするとスタックA も状態は{1, 2, 3, 1, 2, 3}(ア)になる。
【キーワード】
・スタック
【キーワードの解説】
- スタック
データを一時的に記憶するためにメモリに割り当てる領域のことです。
データの取り出しを行うとき、取り出されるデータは最後に挿入されたデータになるので、後入れ先出し方式(Last-In First-Out、LIFO)とも呼ばれます。
もっと、「スタック」について調べてみよう。
戻る
一覧へ
次へ
|