アルゴリズムとプログラミング

基本情報技術者試験データ構造」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
配列と比べた連結リスト(線形リスト)の特徴として最も適切なものはどれか。
添字を指定して任意要素へ一定時間で直接参照できる
要素を連続した記憶領域に隙間なく格納する
途中への挿入や削除をポインタ付替えで行える
格納できる要素数を宣言時に固定する必要がある
正解
途中への挿入や削除をポインタ付替えで行える

連結リストは各ノードが次ノードへのポインタを持つ。途中への挿入・削除は前後のポインタを付け替えるだけで済み、要素のずらしが不要なため効率がよく正しい。

?選択肢ごとの解説

ア ×添字で一定時間に直接参照できるのは連続領域を持つ配列の特徴であり、連結リストは先頭から辿るため不向きである。
イ ×連続領域に隙間なく格納するのは配列の特徴で、連結リストはポインタで結ぶため領域は連続しない。
ウ ○連結リストは各ノードが次ノードへのポインタを持つ。途中への挿入・削除は前後のポインタを付け替えるだけで済み、要素のずらしが不要なため効率がよく正しい。
エ ×要素数を宣言時に固定するのは静的配列の特徴で、連結リストは実行時に動的に伸縮できる。

くわしく

配列は連続領域でランダムアクセスがO(1)だが挿入削除は要素移動でO(n)。連結リストはポインタ連結で挿入削除がO(1)(位置が分かっていれば)だがランダムアクセスはO(n)。両者は得意な操作が相補的で、用途に応じて選択する。

本番での押さえどころ

試験のコツ

配列=『直接参照は速いが挿入削除は遅い』、連結リスト=『その逆』と対で覚える。

覚え方

連結リストは『数珠つなぎ』、間に玉を足すのは紐を結び直すだけ(挿入が楽)と例える。

よくある誤り

配列と連結リストの長所(ランダムアクセス vs 挿入削除)を取り違える誤りが頻出する。

アルゴリズムとプログラミングの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0034

【基本情報技術者試験】データ構造の問題 — 解答・解説|ukamiru 過去問