Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

Javascriptのリンクリストクラス


これがLinkedListクラスの完全な実装です-

class LinkedList {
   constructor() {
      this.head = null;
      this.length = 0;
   }
   insert(data, position = this.length) {
      let node = new this.Node(data);
      if (this.head === null) {
         this.head = node;
         this.length++;
         return this.head;
      }
      let iter = 1;
      let currNode = this.head;
      while (currNode.next != null && iter < position) {
         currNode = currNode.next;
         iter++;
      }
      node.next = currNode.next;
      currNode.next = node;
      this.length++;
      return node;
   }
   remove(data, position = 0) {
      if (this.length === 0) {
         console.log("List is already empty");
         return;
      }
      this.length--;
      let currNode = this.head;
      if (position <= 0) {
         this.head = this.head.next;
      }
      else if (position >= this.length - 1) {
         while (currNode.next.next != null) {
            currNode = currNode.next;
         }
         currNode.next = null;
      }
      else {
         let iter = 0; while (iter < position) {
            currNode = currNode.next; iter++;
         }
         currNode.next = currNode.next.next;
      }
      return currNode;
   }
   display() {
      let currNode = this.head;
      while (currNode != null) {
         console.log(currNode.data + " -> ");
         currNode = currNode.next;
      }
   }
}
LinkedList.prototype.Node = class {
   constructor(data) {
      this.data = data;
       this.next = null;
   }
};

  1. Javascriptの循環としての二重リンクリスト

    二重リンクリストでは、最後のノードの次のポインタが最初のノードを指し、最初のノードの前のポインタが最後のノードを指し、両方向に循環します。 循環リンクリストでの挿入と削除は、他のリンクリストと同じです。リンクリストの両端で操作を実行している間は、最後のリンクを追跡する必要があります。 循環リンクリストアルゴリズムをガイドとして使用して、循環リンクリストを検索して実装してみることができます。

  2. Javascriptの循環としての単一リンクリスト

    単一リンクリストでは、最後のノードの次のポインタが最初のノードを指します。