平成25年秋期試験問題 午前問6
問6解説へ
リストは,配列で実現する場合とポインタで実現する場合とがある。リストを配列で実現した場合の特徴として,適切なものはどれか。
- リストにある実際の要素数にかかわらず,リストの最大長に対応した領域を確保し,実際には使用されない領域が発生する可能性がある。
- リストにある実際の要素数にかかわらず,リストへの挿入と削除は一定時間で行うことができる。
- リストの中間要素を参照するには,リストの先頭から順番に要素をたどっていくので,要素数に比例した時間が必要となる。
- リストの要素を格納する領域の他に,次の要素を指し示すための領域が別途必要となる。
広告
解説
- 正しい。配列で実現するリストの特徴です。配列を用いる場合は最大の要素数を格納できるだけのメモリ領域を確保する必要があります。1000要素分確保しても実際の格納数が10要素程度だとすると、残りの990要素分のメモリ領域が無駄になってしまいます。
- 配列リストに要素を挿入する場合、挿入位置より後ろに格納されている要素を1つずつ後ろの領域へ移動しなくてはなりません。また削除する場合は削除位置より後ろに格納されている要素を1つずつ前に移動する必要があります。挿入や削除の対象要素が配列リストの前方であるほど、後方に存在する要素が多くなるので処理に時間がかかることになります。
- ポインタで実現するリストの特徴です。配列リストでは要素をメモリ上の連続した領域に格納するので、添字と一要素のデータサイズから参照すべきメモリアドレスをすぐに計算することができます。したがって要素の格納位置にかかわらず参照時間は一定になります。
- ポインタで実現するリストの特徴です。配列リストは連続したメモリ領域に添字順に要素を格納するので、次の要素の位置を容易に計算することができます。したがって、ポインタリストのように次の要素へのポインタを保持しておく必要はありません。
広告