🔳

配列と連結リストの違いと使い分け

に公開

配列(Array)と連結リスト(Linked List)は、どちらもデータをまとめて扱うための基本的なデータ構造です。しかし、それぞれ内部構造や操作の得意・不得意が異なるため、用途によって使い分けが重要です。


📦 配列(Array)

特徴

  • メモリ上で連続した領域にデータを格納
  • インデックスを使って即座にアクセス可能(O(1)
  • サイズは固定(配列)または可変(スライス)

メリット

  • 要素のランダムアクセスが高速
  • メモリ効率が良い(オーバーヘッドが少ない)

デメリット

  • 中間への挿入・削除は遅い(O(n)
  • サイズ変更には再確保が必要(特に配列)

🔗 連結リスト(Linked List)

特徴

  • 各要素(ノード)が次のノードへのポインタを保持
  • メモリは非連続に確保される
  • 単方向リスト(Singly)と双方向リスト(Doubly)がある

メリット

  • 中間への挿入・削除が高速(ノードを特定できていれば O(1)
  • サイズ変更が柔軟

デメリット

  • ランダムアクセスが遅い(O(n)
  • ポインタ分のメモリオーバーヘッドがある

🧠 配列と連結リストの使い分け

ケース 推奨される構造 理由
ランダムアクセスが多い 配列 O(1) で即座にアクセス可能
頻繁に挿入・削除を行う(特に中間) 連結リスト 要素の移動が不要
サイズが事前に分かっている 配列 メモリ効率が良い
サイズが頻繁に変わる 連結リスト 動的に拡張・縮小できる
メモリの局所性を活かしたい 配列 連続領域のためキャッシュ効率が高い

Discussion