JavaScriptデータ構造:二重連結リスト:イントロとセットアップ



イントロ
完了したら、二重リンクリストから始めます.

二重リンクリストとは何か
  • 二重リンクリストはノードから成る
  • 各ノードの値
  • 各ノードは前のノードへのポインタを持っています(リストの先頭にNULLがあります).
  • 各ノードは次のノードへのポインタを持っている(リストの最後にNULLを返す)
  • リストに頭がある
  • リストはtail ( end )を持つ
  • リストには長さがあります.
  • リストに配列のようなインデックスはありません
  • 「二重」はすべてのノードが2つの接続(前のノードと次のノードへの1つ)を持っていることを意味します

  • A <===> B <===> C
  • 次のようにします.
  • エーネクストB
  • B :前置き
  • 次のC
  • タグ:C
  • 次のNULL

  • 二重リンクリストの大きいO
  • アクセスO(N)
  • 検索O(N)
  • インサートO(1)
  • 削除O(1)

  • セットアップ
    // a Node has a value, a pointer to the previous node (= prev), a pointer to the next node (= next)
    class Node {
      constructor(value) {
        this.value = value;
        this.prev = null;
        this.next = null;
      }
    }
    
    // a Doubly Linked List has a length, a beginning (= head), an end (= tail)
    class DoublyLinkedList {
      constructor() {
        this.length = 0;
        this.head = null;
        this.tail = null;
      }
    }
    

    結果
    const newNode = new Node(1);
    console.log(newNode);
    // Node { value: 1, prev: null, next: null }
    
    const newDLL = new DoublyLinkedList();
    console.log(newDLL);
    // DoublyLinkedList { length: 0, head: null, tail: null }
    

    次部分
    最初のメソッドをリストに実装します.通知したい場合はsubscribe !

    質問
  • 二重リンクリストの適切なユースケースは何ですか?
  • あなたは、単一のリンクリストに対していくつかの利点を見つけることができますか?
  • あなたは単独リンクリストに対していくつかの不利点を見つけることはできますか?