平成22年春期試験問題 午前問5

問5解説へ
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタa~fの中で追加前と比べて値が変わるポインタだけをすべて列記したものはどれか。

- a,b,e,f
- a,e,f
- a,f
- b,e
広告
解説
まず、追加前の社員名をポインタの示すアドレスの順([ ]内はアドレス)に並べます。前ポインタが"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か所です。

広告