基本情報トップに戻る
練習問題難易度: 標準2019年度

基本情報技術者 過去問練習問題 第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. 1[1, 2, 3, 1, 2, 3]
  2. 2[1, 2, 3, 3, 2, 1]
  3. 3[3, 2, 1, 1, 2, 3]
  4. 4[3, 2, 1, 3, 2, 1]

正解

1. [1, 2, 3, 1, 2, 3]

詳しい解説を見る

解説

スタックは後入れ先出し(LIFO)で、[1,2,3]の右端3が先頭。f()は「Aから1つpopしてCにpush→再帰→Cから1つpopしてBにpush」を繰り返す。Aから3,2,1の順にpopしCに積み(再帰の深い順)、戻りながらCのトップから順にpopしてBへ積む。Cに積まれた順(下から3,2,1)を再帰の戻りでpopすると1,2,3の順でBに追加され、Bは初期[1,2,3]の上に1,2,3が乗って[1,2,3,1,2,3]となる。よって「ア」が正しい。(出典: 平成31年度 春期 基本情報技術者試験 午前 問6)

一問一答

科目A 180問+科目B 60問

練習問題の関連問題

この調子で演習を続けよう

スキマ資格では基本情報の全2398問を分野別・難易度別に体系的に学習できます。基本情報技術者は科目A(広く浅く)と科目B(プログラミング・アルゴリズム)の両輪での対策が必要です。