正答1
解説
正解は1です。
この問題は、リストを配列で実現する方法と、ポインタで実現する方法(連結リスト)の違いを問うています。
配列は連続した領域を先に確保し、添字で要素を直接参照します。
連結リストは要素ごとに次の要素の位置(ポインタ)を持ち、つないでいきます。
【選択肢別解説】
1:○ 配列では、想定される最大の要素数に合わせて領域をあらかじめ確保します。
実際の要素数が少ないと、使われない領域が残ることがあります。
2:× 配列で途中に挿入や削除をすると、後ろの要素を1つずつずらす必要があります。
そのため処理時間は要素数に比例して増え、一定時間にはなりません。
一定時間で挿入・削除できるのは、ポインタでつなぎ替える連結リストの特徴です。
3:× 配列は添字を使って任意の要素を直接参照できるので、中間要素も一定時間で参照できます。
先頭から順にたどる必要があるのは連結リストです。
4:× 次の要素を指すための領域が別に必要なのは、ポインタで実現した連結リストです。
配列は要素が連続して並ぶので、ポインタの領域は要りません。
【ポイント】
配列は「参照が速いが、挿入・削除が遅く、領域が固定的」です。
連結リストは「挿入・削除が速いが、参照は先頭からたどるので遅い」と対比して覚えます。