平成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}(ア)になる。


キーワード
・スタック

キーワードの解説
  • スタック
    データを一時的に記憶するためにメモリに割り当てる領域のことです。
    データの取り出しを行うとき、取り出されるデータは最後に挿入されたデータになるので、後入れ先出し方式(Last-In First-Out、LIFO)とも呼ばれます。

もっと、「スタック」について調べてみよう。

戻る 一覧へ 次へ