プログラミングの基礎(擬似言語のトレース)
次のプログラムは、配列 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
- AA, B, C, D, E
- BC, E, D, B
- 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 の順にたどります。