平成14年春期試験問題 午前問12

問12解説へ
次のような双方向のポインタをもつリスト構造のデータがある。社員Gを社員Aと社員Kの間に追加する場合,追加後の表のポインタa~fのうち,追加前と比べて値が変わるのは何か所か。

- 1
- 2
- 3
- 4
広告
解説
追加前の社員名をポインタの示すアドレス順(括弧内はアドレス)に並べると、前ポインタが"0(参照なし)"の要素が先頭、次ポインタが"0(参照なし)"の要素が最後尾に配置されるので、
100:社員A(次300,前0)
↓
300:社員K(次200,前100)
↓
200:社員T(次0,前300)
という順序になります。
社員Gは、社員Aと社員Kの間に追加されるので、追加後の順番は、
100:社員A(次300,前0)
↓
400:社員G(次__,前__)
↓
300:社員K(次200,前100)
↓
200:社員T(次0,前300)
となります。
「A→G→K」のポインタの参照が正しく繋がるためには、"Gの前であるAの次ポインタ"と"Gの後であるKの前ポインタ"をそれぞれ400に更新する必要があります。したがって、追加前と値が変わるポインタは以下のように「a,f」の2か所です。
100:社員A(次300,前0)
↓
300:社員K(次200,前100)
↓
200:社員T(次0,前300)
という順序になります。
社員Gは、社員Aと社員Kの間に追加されるので、追加後の順番は、
100:社員A(次300,前0)
↓
400:社員G(次__,前__)
↓
300:社員K(次200,前100)
↓
200:社員T(次0,前300)
となります。
「A→G→K」のポインタの参照が正しく繋がるためには、"Gの前であるAの次ポインタ"と"Gの後であるKの前ポインタ"をそれぞれ400に更新する必要があります。したがって、追加前と値が変わるポインタは以下のように「a,f」の2か所です。

広告