三つのスタックA 、B 、C のいずれの初期状態も[1, 2, 3]であるとき、再帰的に定義された関数f ( )を呼び出して終了した後のB の状態はどれか。
ここで、スタックが[a1, a2,…, an-1]の状態のときにanをpushした後のスタックの状態は[a1, a2,…, an-1, an]で表す。
ア | {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}(ア)になる。
【キーワード】
・スタック