多数のデータが単方向リスト構造で格納されている。
このリスト構造には,先頭ポインタとは別に,末尾のデータを指し示す末尾ポインタがある。
次の操作のうち,ポインタを参照する回数が最も多いものはどれか。
正答4
解説
正解は4です。
先頭ポインタと末尾ポインタをもつ単方向リストで、各操作の手間を比べる問題です。
単方向リストの各要素は次の要素へのポインタだけをもち、前の要素へは戻れません。
【選択肢別解説】
1:× 新しい要素の次ポインタに今の先頭を入れ、先頭ポインタを新要素に替えるだけです。
リストの長さに関係なく、少ない回数で済みます。
2:× 先頭ポインタを、先頭要素がもつ次ポインタの値に置き換えるだけです。
これも長さに関係なく一定の回数で済みます。
3:× 末尾ポインタで末尾要素がすぐに分かります。
その次ポインタと末尾ポインタを新要素に替えるだけで済みます。
4:○ 末尾を削除するには、末尾の1つ前の要素の次ポインタを空にする必要があります。
単方向リストでは前へ戻れないため、先頭から順にたどって1つ前の要素を探します。
そのためデータ数に比例した回数のポインタ参照が必要になり、最も多くなります。
【ポイント】
末尾の削除を速くしたいときは、前の要素へのポインタももつ双方向リストを使います。
末尾ポインタは末尾への追加を速くしますが、末尾の削除は速くしません。