Heim >Web-Frontend >js-Tutorial >JavaScript implementiert eine doppelt verknüpfte Liste (Codebeispiel)

JavaScript implementiert eine doppelt verknüpfte Liste (Codebeispiel)

藏色散人
藏色散人Original
2019-04-12 10:50:032076Durchsuche

In diesem Artikel stellen wir Ihnen vor, wie Sie eine doppelt verknüpfte Liste in JavaScript implementieren. Wir hoffen, dass er Freunden in Not hilfreich sein wird!

Was ist eine doppelt verknüpfte Liste?

In einer doppelt verknüpften Liste hat jeder Knoten einen Verweis auf den vorherigen Knoten und den nächsten Knoten. Der vorherige und nächste Start- und Endknoten sollten auf Null zeigen.

JavaScript implementiert eine doppelt verknüpfte Liste (Codebeispiel)

Implementierung einer doppelt verknüpften Liste

Im folgenden Code erstellen wir eine Hilfsklasse Node , das drei Attributdaten enthält: prev, next.

class Node {

  constructor(data){
    this.data = data; // data
    this.prev = null; // 引用prev节点
    this.next = null; // 引用next节点
  }}

Daten: Die Daten, die wir dem Knoten hinzufügen müssen.

prev: bezieht sich auf den vorherigen Knoten.

next: bezieht sich auf den nächsten Knoten.

Der Hauptalgorithmus beginnt

class DoublyLinkedList{

   constructor(){
        this.head = null;
        this.tail = null;
        this.length = null;
  }}

Im obigen Code erstellen wir eine DoublyLinkedList-Klasse mit drei Eigenschaften: Kopf, Schwanz und Länge.

Kopf: Es ist der erste Knoten in der Liste.

tail: Der letzte Knoten in der Liste.

Länge: Wie viele Knoten gibt es in der Liste?

Fügen wir diese Funktionen zu unserer doppelt verknüpften Liste hinzu

Push-Methode

Push-Methode hilft uns, neue Knoten am Ende der verknüpften Liste hinzuzufügen.

push(data){

    const node = new Node(data);

    if(!this.head){
      this.head = node;
      this.tail = node;
    }else{
      node.prev = this.tail;
      this.tail.next = node;
      this.tail = node;

    }

    this.length++;
  }

1. Im obigen Code deklarieren wir zunächst eine neue Variable und rufen den Knotenkonstruktor auf.

2. Wenn es keinen this.head gibt, sind this.head und this.tail die neuen Knoten, die wir in Schritt 1 erstellt haben.

3. Wenn bereits ein Knoten vorhanden ist

sollte das neue Attribut node.prev this.tail sein

this.tail.next sollte ein neuer Knoten sein

Schwanz aktualisieren.

4. Erhöhen Sie die Länge um 1.

Pop-Methode

hilft uns, den letzten Knoten aus der Liste zu entfernen.

In einer doppelt verknüpften Liste ist es einfach, den letzten Knoten aus der Liste zu entfernen, da im Tail-Attribut ein Verweis auf den vorherigen Knoten vorhanden ist.

pop(){

    if(!this.head) return null

    // tail是最后一个节点,因此我们从tail中提取prev属性
    const prevNode = this.tail.prev    
    if(prevNode){
       prevNode.next = null;
       this.tail = prevNode; // 更新tail
    }else{
      // 如果prev属性为null,则表示只有一个节点
      this.head = null;
      this.tail = null;
    }
     this.length--; 
  }

1. Im obigen Code deklarieren wir zunächst eine neue Variable und speichern das vorherige Attribut von tail.

2. Wenn der vorherige Knoten gefunden wird.

Letzten Knoten löschen

Ende aktualisieren.

3. Wenn der vorherige Knoten leer ist, bedeutet das, dass es nur einen Knoten gibt

this.head und this.tail sollten null sein.

4. Reduzieren Sie die Länge um 1.

insertBeginning

insertBeginning-Methode hilft uns, einen neuen Knoten am Anfang der Liste einzufügen.

insertBeginning(data){

    // 创建新节点
    const node = new Node(data);

    // 如果没有节点
    if(!this.head) {
      this.head = node;
      this.tail = node;
    }else{
      this.head.prev = node
      node.next = this.head;
      this.head = node;
    }
    // 增加长度
    this.length++;

  }

removeFirst-Methode

removeFirst-Methode hilft uns, den ersten Knoten aus der verknüpften Liste zu löschen.

removeFirst(){

    if(!this.head) return null

    // 存储第二个节点
    const node = this.head.next;

    if(node){
     // 删除前一个节点
      node.prev = null
     // 更新head
      this.head = node    
      }else{
      // 只有一个节点,所以我们将head和tail更新为null
      this.head = null
      this.tail = null
    }
     this.length--;

  }

Verwandte Empfehlungen: „Javascript-Tutorial

Das obige ist der detaillierte Inhalt vonJavaScript implementiert eine doppelt verknüpfte Liste (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn