Heim > Web-Frontend > js-Tutorial > Hauptteil

JavaScript implementiert eine doppelt verknüpfte Liste (Codebeispiel)

藏色散人
Freigeben: 2019-04-12 10:50:03
Original
1991 Leute haben es durchsucht

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节点
  }}
Nach dem Login kopieren

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;
  }}
Nach dem Login kopieren

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++;
  }
Nach dem Login kopieren

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--; 
  }
Nach dem Login kopieren

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++;

  }
Nach dem Login kopieren

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--;

  }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!