平成22年度 春期 午前 問5
データ構造
ポインタだけをすべて列記したもの
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員 G を社員 A と社員 K の間に追加する。追加後の表のポインタ a〜f の中で追加前と比べて値が変わるポインタだけをすべて列記したものはどれか。
表 アドレス │ 社員名 │ 次ポインタ │ 前ポインタ ─────────┼────────┼────────────┼──────────── 100 │ 社員A │ 300 │ 0 200 │ 社員T │ 0 │ 300 300 │ 社員K │ 200 │ 100 追加後の表 アドレス │ 社員名 │ 次ポインタ │ 前ポインタ ─────────┼────────┼────────────┼──────────── 100 │ 社員A │ a │ b 200 │ 社員T │ c │ d 300 │ 社員K │ e │ f 400 │ 社員G │ x │ y
- アa,b,e,f
- イa,e,f
- ウa,f
- エb,e
答えと解説を見る
✓ これが正解ウa,f
解説
つなぎ替わるポインタは切れ目の両側の2つだけです。
追加前の表を読み解くと、社員Aが次に社員Kを指し、社員Kが次に社員Tを指す並びになっています。ここで社員Aと社員Kの間に社員Gを割り込ませるとき、鎖のどこが切れるかを考えます。切れるのは社員Aと社員Kを結んでいた一組の結び目だけで、そこに新しい要素が入ります。前向きの鎖では社員Aの行き先が社員Gに変わり、後ろ向きの鎖では社員Kの戻り先が社員Gに変わります。社員Tは切れ目から離れているので、行きも戻りも書き換える理由がありません。社員Aの戻り先も、先頭であることが変わらないのでそのままです。判定の軸は、切れ目に触れている結び目だけが値を変え、それ以外は追加前の値を保つことです。
ほかの選択肢はなぜ違うのか
- アa,b,e,f:社員Aの戻り先と社員Kの行き先まで変わるとしています。社員Aは追加後も先頭のままで戻り先を持たず、社員Kの行き先も社員Tのままなので、この2つは追加前の値が保たれます。
- イa,e,f:社員Kの行き先が変わるとしています。割り込ませる位置は社員Aと社員Kの間なので、社員Kから社員Tへ向かう結び目には手が入らず、その値は追加前と同じです。
- エb,e:社員Aの戻り先と社員Kの行き先という、切れ目に触れていない2つだけを挙げています。実際に書き換わる社員Aの行き先と社員Kの戻り先が、どちらも入っていません。
出典:平成22年度 春期 基本情報技術者試験 午前 問5
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)