Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में डबल लिंक्ड लिस्ट क्लास


DoublyLinkedList Class का पूरा कार्यान्वयन यहां दिया गया है -

उदाहरण

class DoublyLinkedList {
   constructor() {
      this.head = null;
      this.tail = null;
      this.length = 0;
   }
   insert(data, position = this.length) {
      let node = new this.Node(data);
      // List is currently empty
      if (this.head === null) {
         this.head = node;
         this.tail = node;
         this.length++;
         return this.head;
      }
      // Insertion at head
      if (position == 0) {
         node.prev = null;
         node.next = this.head;
         this.head.prev = node;
         this.head = node;
         return this.head;
      }
      let iter = 1;
      let currNode = this.head;
      while (currNode.next != null && iter < position) {
         currNode = currNode.next; iter++;
      }
      // Make new node point to next node in list
      node.next = currNode.next;
      // Make next node's previous point to new
      node if (currNode.next != null) {
         currNode.next.prev = node;
      }
      // Make our node point to previous node
      node.prev = currNode;

      // Make previous node's next point to new node
      currNode.next = node;

      // check if inserted element was at the tail, if yes then make tail point to it
      if (this.tail.next != null) {
         this.tail = this.tail.next;
      }
      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;
         this.head.prev = null;
      } else if (position >= this.length - 1) {
         this.tail = this.tail.prev;
         this.tail.next = null;
      } else {
         let iter = 0;
         while (iter < position) {
            currNode = currNode.next;
            iter++;
         }
         currNode.next = currNode.next.next;
         currNode.next.prev = currNode;
      }
      return currNode;
   }
   display() {
      let currNode = this.head;
      while (currNode != null) {
         console.log(currNode.data + " <-> ");
         currNode = currNode.next;
      }
   }
}

DoublyLinkedList.prototype.Node = class {
   constructor(data) {
      this.data = data;
      this.next = null;
      this.prev = null;
   }
};

  1. जावास्क्रिप्ट का उपयोग करके एक लिंक की गई सूची बनाना

    आइए एक कंस्ट्रक्टर के साथ एक साधारण वर्ग को परिभाषित करके शुरू करते हैं जो सिर को शून्य से आरंभ करता है। हम LinkedList वर्ग के प्रोटोटाइप पर एक और संरचना भी परिभाषित करेंगे जो लिंक की गई सूची में प्रत्येक नोड का प्रतिनिधित्व करेगी। उदाहरण क्लास लिंक्डलिस्ट {कन्स्ट्रक्टर () {this.head =null; यह लंबा

  1. जावास्क्रिप्ट में सर्कुलर के रूप में डबल लिंक्ड लिस्ट

    डबल लिंक्ड लिस्ट में, अंतिम नोड का अगला पॉइंटर पहले नोड को इंगित करता है और पहले नोड का पिछला पॉइंटर दोनों दिशाओं में सर्कुलर बनाने वाले अंतिम नोड को इंगित करता है। एक सर्कुलर लिंक्ड लिस्ट में इंसर्शन और डिलीशन अन्य लिंक्ड लिस्ट के समान ही होते हैं। लिंक की गई सूची के किसी भी छोर पर संचालन करते स

  1. जावास्क्रिप्ट में सर्कुलर के रूप में सिंगल लिंक्ड लिस्ट

    सिंगल लिंक्ड लिस्ट में, अंतिम नोड का अगला पॉइंटर पहले नोड की ओर इशारा करता है।