平成31年 春期 基本情報技術者 午前 問6

三つのスタック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}(ア)になる。


キーワード
・スタック

キーワードの解説

戻る 一覧へ 次へ