What is a Doubly Linked List?
Coddyの「双方向連結リスト - データ構造シリーズ #6」コースのレッスン 2/14。
双方向連結リストは、各ノードが値と2つのポインタ(前のノードへのprevと次のノードへのnext)を持つノードのシーケンスです。リスト自体は、head(最初のノード)とtail(最後のノード)の両端を追跡します。
ノードごとの2つのポインタと追加のtail参照により、多くの利点が得られます。末尾への追加はO(1)になり(チェーンをたどる代わりにtailに直接ジャンプします)、最後のノードの削除もO(1)になります(tail.prevから最後から2番目のノードに到達できるため)。トレードオフは、ノードあたりのメモリ消費が増えることと、挿入や削除のたびに同期を保つべきポインタが増えることです。
双方向連結リストにおける主な5つの操作は以下の通りです:
- AddFirst: リストの先頭に値を追加します。
- AddLast: リストの末尾に値を追加します(O(1)!)。
- Get: 指定されたインデックスの値を返します。
- RemoveLast: 最後のノードを削除します(O(1)!)。
- Size: 現在格納されているノードの数を返します。
まずNodeクラスを作成し、その上にDoublyLinkedListを構築しましょう!
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
双方向連結リスト - データ構造シリーズ #6のすべてのレッスン
自分で練習してみよう: Cオンラインコンパイラ