リストには,配列で実現する場合とポインタで実現する場合とがある。
リストを配列で実現した場合の特徴として,適切なものはどれか。
ここで,配列を用いたリストは配列に要素を連続して格納することによってリストを構成し,ポインタを用いたリストは要素と次の要素へのポインタを用いることによってリストを構成するものとする。
正答1
解説
正解は1です。
配列によるリストは、要素を連続した領域に順番に格納します。
ポインタによるリスト(連結リスト)は、各要素に次の要素の位置(ポインタ)を持たせてつなぎます。
両者の特徴の違いが問われています。
【選択肢別解説】
1:○ 配列は、あらかじめ最大個数分の連続領域を確保しておく必要があります。
実際の要素数が少なければ使われない領域が残るので、配列による実現の特徴として適切です。
2:× 配列では、添字(何番目か)から格納位置を計算して中間の要素を直接参照できるので、時間は要素数によりません。
先頭から順にたどる必要があるのはポインタによるリストです。
3:× 次の要素を指す領域が別に必要なのは、ポインタによるリストです。
配列では格納順そのもので次の要素が決まるため、ポインタ用の領域は不要です。
4:× 挿入位置が分かれば一定時間で挿入できるのは、ポインタの付け替えだけで済むポインタによるリストです。
配列では挿入位置より後ろの要素を一つずつずらす必要があり、要素数に比例した時間がかかります。
【ポイント】
配列は参照が速い一方で、挿入・削除が遅く、領域の無駄が出やすい構造です。
連結リストは挿入・削除が速い一方で、参照が遅く、ポインタ用の領域が余分に必要です。