プログラミングの基礎(擬似言語のトレース)

次のプログラムは、配列 next で要素どうしをつないだ連結リストを、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力される値の並びはどれか。

文字列型の配列: val ← {"A", "B", "C", "D", "E"}
整数型の配列: next ← {3, 0, 5, 2, 4}
整数型: p ← 1
while (p ≠ 0)
  出力 val[p]
  p ← next[p]
endwhile
  1. AA, B, C, D, E
  2. BC, E, D, B
  3. CA, C, E, D, B
答えと解説を見る

正解:C. A, C, E, D, B

p = 1 で val[1] の A を出力し、p ← next[1] で p = 3 に進みます。続いて C を出力して next[3] = 5、E を出力して next[5] = 4、D を出力して next[4] = 2、B を出力して next[2] = 0 となり、繰返しを抜けます。出力は A, C, E, D, B です。リストの順は配列の並び順ではなく、next の値で決まります。

  • A. 配列の並び順に出力した場合です。たどる順は next の値で決まります。
  • B. 出力の前に p を進めた場合の並びで、先頭の A が抜けます。
  • C. 正しい。要素番号 1 → 3 → 5 → 4 → 2 の順にたどります。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 次のプログラムは、配列 next でつないだ連結リスト A → C → E → D → B の「C」(要素番号3)の直後に、val[6] の「F」を挿入してから、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力が A, C, F, E, D, B となるように【a】に入れる処理はどれか。
  2. 制御変数を5ずつ増やす次の for 文を実行した後の c の値はどれか。
  3. 次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。
  4. 要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1から始まる。and と or は、左側の式だけで結果が決まるときは右側の式を評価しない。【a】に入れる条件式のうち、x が a の中にないときに範囲外の a[n + 1] を参照してしまうものはどれか。
  5. 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。