【れんけつりすと】
連結リスト とは?
最終更新:
💡 鎖のように「次はあっちだよ」と繋がっているデータの列
データを持つノードが、次のノードへの参照(ポインタ)で鎖状につながるデータ構造。必要なノードが分かれば参照の付け替えで挿入・削除できるが、位置を探すには順にたどる必要がある。
📌 このページのポイント
- 単方向では各ノードがデータと次のノードへの参照を持つ
- 必要なノードが分かれば付け替えはO(1)、位置の探索は最悪O(n)
- 先頭の追加・削除と、末尾や途中の操作では必要な参照が異なる
- 双方向では前のノードへの参照も持ち、逆向きにもたどれる
連結リストって配列と何が違うの?
どんな時に連結リストが便利なの?
挿入場所の直前のノードが分かっているなら、新しいノードのnextを後ろへ向け、直前のnextを新ノードへ向ける、といった付け替えで挿入できる。場所を探す時間は別で、番号で指定すると最悪O(n)かかる。削除でも必要な参照を用意するんだ。
末尾の追加や削除もいつもO(1)なの?
単方向でも末尾への参照を持てば、末尾追加の付け替えはO(1)だよ。でも末尾削除は、その直前を探すために先頭からたどる場合がある。双方向で末尾への参照もあれば、前をすぐ取得して削除できる。どの参照を持つ実装かが大切だね。
実際のプログラミングで使う場面は?
双方向連結リストって何?
次だけでなく前のノードへの参照も持つので、逆向きにもたどれるよ。挿入や削除では両側の参照を正しく更新する必要がある。ノードが分かれば速く付け替えられるけれど、番号指定で探す時間は残る。単方向より参照の保存や更新も増えるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「連結リスト」って出てきたら「次の要素の場所を記録しながら鎖状につながるデータ構造」と思えばだいたいOK!
📖 おまけ:英語の意味
「Linked List」 = 連結されたリスト
💬 Linkは「つなぐ」、Listは「一覧」。ノードの参照をたどると、離れた場所のデータも一つの列として扱える、というイメージだよ