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

次のプログラムは、配列 next でつないだ連結リスト A → C → E → D → B の「C」(要素番号3)の直後に、val[6] の「F」を挿入してから、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力が A, C, F, E, D, B となるように【a】に入れる処理はどれか。

文字列型の配列: val ← {"A", "B", "C", "D", "E", "F"}
整数型の配列: next ← {3, 0, 5, 2, 4, 0}
【a】
整数型: p ← 1
while (p ≠ 0)
  出力 val[p]
  p ← next[p]
endwhile
  1. Anext[3] ← 6 の後に next[6] ← next[3]
  2. Bnext[6] ← 3 の後に next[3] ← next[6]
  3. Cnext[6] ← next[3] の後に next[3] ← 6
答えと解説を見る

正解:C. next[6] ← next[3] の後に next[3] ← 6

挿入では、新しい要素 F の次を、C が元々指していた E(next[3] = 5)にしてから、C の次を F にします。next[6] ← next[3] で next[6] = 5、続く next[3] ← 6 で C → F → E がつながります。順を逆にすると、next[3] を6に書き換えた後で next[6] ← next[3] を行うので next[6] = 6 となり、F が自分自身を指して C, F, F, … と終わらなくなります。連結リストのつなぎ替えでは、後ろの要素への道筋を失わない順に代入します。

  • A. next[6] が6になり、F が自分自身を指して、たどる処理が終わらなくなります。
  • B. next[6] = 3、next[3] = 3 となって C が自分自身を指し、A, C, C, … と終わらなくなります。
  • C. 正しい。F の次を E にしてから、C の次を F にします。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. 制御変数を5ずつ増やす次の for 文を実行した後の c の値はどれか。
  2. 次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。
  3. 要素数 n の配列 a から値 x を探し、見つかった要素番号を i に求める次のプログラムがある。配列の要素番号は1から始まる。and と or は、左側の式だけで結果が決まるときは右側の式を評価しない。【a】に入れる条件式のうち、x が a の中にないときに範囲外の a[n + 1] を参照してしまうものはどれか。
  4. 実数型の値は IEEE 754 の倍精度(binary64)で表し、加算の結果は最も近い表せる値に丸める。次のプログラムを実行した後の c の値はどれか。
  5. クラス Counter は、インスタンスごとに整数型のメンバ変数 count(生成時は0)を持ち、メソッド inc() は自分の count に1を加える。次のプログラムを実行した後の x の値はどれか。