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

基本情報技術者試験連結リスト」の問題

テクノロジ系アルゴリズムとプログラミング難易度:normal
単方向連結リストと比べた双方向連結リストの利点として最も適切なものはどれか。
各ノードが前後両方のポインタを持つため、ある要素から直前の要素へ直接たどれる
ノードあたりのポインタ領域が減るため、同じ要素数を格納しても全体の消費メモリが単方向より明確に小さく済む
添字計算によって任意位置の要素へ定数時間でランダムアクセスできる
要素を常に整列済みの状態に自動で保ち、探索が二分探索並みになる
正解
各ノードが前後両方のポインタを持つため、ある要素から直前の要素へ直接たどれる

双方向連結リストは各ノードが次と前の2つのポインタを持つ。これにより単方向では不可能な直前要素への直接移動ができ、逆方向走査や末尾近くの削除が容易になるため正しい。

?選択肢ごとの解説

ア ○双方向連結リストは各ノードが次と前の2つのポインタを持つ。これにより単方向では不可能な直前要素への直接移動ができ、逆方向走査や末尾近くの削除が容易になるため正しい。
イ ×ポインタが前後2本に増えるため、双方向のほうがノードあたりのメモリは単方向より大きくなり、消費が小さくなるという説明は逆である。
ウ ×添字計算による定数時間ランダムアクセスは配列の特徴であり、連結リストは先頭から順にたどるため双方向でも任意位置アクセスはO(n)である。
エ ×連結リストは自動で整列を保つ構造ではなく、二分探索もできない。整列維持は別途挿入位置探索が必要で、構造の性質ではない。

くわしく

連結リストはポインタで要素をつなぐ構造で、単方向は次のみ、双方向は前後を指す。双方向は逆走査と任意ノードの削除(直前を知る必要がない)が容易になる代わりにポインタ領域が増える。トレードオフを理解することが核心である。

本番での押さえどころ

試験のコツ

『双方向=前後にたどれる代わりにポインタ1本分メモリ増』とトレードオフをセットで覚える。ランダムアクセスは配列の特権と区別する。

覚え方

双方向は『行きも帰りもできる二車線道路』、ただし道幅(メモリ)は広く要る、とイメージする。

よくある誤り

連結リストに配列の特徴(ランダムアクセス)を当てはめたり、双方向化でメモリが減ると誤解する例が多い。

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

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

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

無料ではじめる →

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

【基本情報技術者試験】連結リストの問題 — 解答・解説|ukamiru 過去問