先頭ポインタと末尾ポインタをもち,多くのデータがポインタでつながった単方向の線形リストの処理のうち,先頭ポインタ,末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。
ここで,単方向のリストは先頭ポインタからつながっているものとし,追加するデータはポインタをたどらなくても参照できるものとする。
正答4
解説
正解は4です。
単方向リストは、各データが次のデータへのポインタだけをもつ構造です。
先頭ポインタと末尾ポインタがあっても、ある要素の「1つ前」へは先頭からたどらないと到達できません。
【選択肢別解説】
1:× 先頭への追加は、追加データのポインタに現在の先頭を設定し、先頭ポインタを追加データに付け替えるだけです。
たどる回数はごく少なく済みます。
2:× 先頭の削除は、先頭ポインタを先頭データの次のデータに付け替えるだけです。
リストをたどる必要はありません。
3:× 末尾への追加は、末尾ポインタが指すデータの次に追加データをつなぎ、末尾ポインタを付け替えるだけです。
リストをたどる必要はありません。
4:○ 末尾を削除するには、末尾の1つ前のデータのポインタを空にし、末尾ポインタをそのデータに移す必要があります。
1つ前のデータは先頭から順にたどって探すしかないため、たどる回数がデータ数に比例して最も多くなります。
【ポイント】
単方向リストでは、末尾の削除や任意要素の直前への挿入が苦手です。
前の要素へのポインタも持つ双方向リストにすると、末尾の削除もたどらずに行えます。