双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタa〜fの中で追加前と比べて値が変わるポインタだけを全て列記したものはどれか。
- ア a,b,e,f
- イ a,e,f
- ウ a,f
- エ b,e
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタa〜fの中で追加前と比べて値が変わるポインタだけを全て列記したものはどれか。
正解: ウ
現在の並び順は「社員A(100)→社員T(200)」で、社員K(300)は前ポインタが100(社員Aを指す)、次ポインタが200(社員Tを指す)となっている。つまり実際の並びは A → K → T である(表の記載順ではなく、ポインタが示す論理的な順序に注意)。
ここに社員G(400)を「社員Aと社員Kの間」に挿入すると、論理的な並びは A → G → K → T になる。
以上より、既存のポインタで値が変わるのは a と f のみで、正解はウ。
双方向リストへの挿入では「挿入位置の前後にあるノードの、挿入方向を向いているポインタだけ」が更新されるという性質を理解しているかが問われている。