データ構造の一つであるリストは,配列を用いて実現する場合と,ポインタを用いて実現する場合とがある。
配列を用いて実現する場合の特徴はどれか。
ここで,配列を用いたリストは,配列に要素を連続して格納することによって構成し,ポインタを用いたリストは,要素から次の要素へポインタで連結することによって構成するものとする。
正答1
解説
正解は1です。
配列で実現したリストと、ポインタで実現したリストの特徴を比べる問題です。
配列は要素を連続した領域に並べるので、位置から格納場所を計算できますが、途中への挿入や削除では後ろの要素をずらす必要があります。
【選択肢別解説】
1:○ 配列は先頭アドレスと要素の大きさから、i番目の要素の格納場所を計算できます。
そのため位置を指定して任意の要素へ直接アクセスできます。
2:× 配列の先頭に挿入するには、既存の全要素を1つずつ後ろへずらす必要があり効率的ではありません。
先頭への挿入が効率的なのは、ポインタをつなぎ替えるだけで済むポインタ方式です。
3:× 参照は遅いが挿入・削除が速いというのは、ポインタを用いたリストの特徴です。
配列は逆に、参照が速く挿入・削除が遅くなります。
4:× 配列で要素を別の位置へ移すと、間にある要素をずらす必要があります。
隣接データを動かさずに移動できるのはポインタ方式です。
【ポイント】
配列は「直接アクセスが得意、挿入・削除が苦手」、ポインタによるリストは「挿入・削除が得意、直接アクセスが苦手」と対で覚えます。