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

JavaScript का उपयोग करके डबल लिंक्ड लिस्ट में एलिमेंट्स इन्सर्ट करना


हमें एक फ़ंक्शन insert(data, position) बनाने की आवश्यकता है जो दिए गए पोजीशन पर लिंक्ड लिस्ट में डेटा इन्सर्ट करता है। हम निम्न चरणों का पालन करेंगे:

  • एक नया नोड बनाएं
  • जांचें कि क्या लिस्ट खाली है। यदि हां तो नोड को हेड और टेल में जोड़ें और लौटें।
  • यदि नहीं, तो हम currElem का उपयोग करके उस पोजीशन पर इटरेट करेंगे जहां हम इसे इन्सर्ट करना चाहते हैं। हम लिंक्ड लिस्ट पर currElem = currElem.next बनाकर इटरेट करते हैं।

अब हम निम्न तरीके से लिंक्स बदलते हैं:

  • नए नोड को लिस्ट में अगले नोड की ओर इंगित करें
  • अगले नोड के प्रीवियस को नए नोड की ओर इंगित करें
  • अपने नोड को प्रीवियस नोड की ओर इंगित करें
  • प्रीवियस नोड के नेक्स्ट को नए नोड की ओर इंगित करें

अंत में, हम currElem से लिस्ट के बाकी हिस्से का लिंक तोड़ते हैं और इसे हमारे बनाए गए नोड की ओर इंगित करते हैं। अब नोड दिए गए पोजीशन पर लिस्ट में है।

यहां इसका एक चित्रण है:

JavaScript का उपयोग करके डबल लिंक्ड लिस्ट में एलिमेंट्स इन्सर्ट करना

आइए देखें कि हम इसे कैसे लागू करेंगे:

उदाहरण

insert(data, position = this.length) {    let node = new this.Node(data);    this.length++;    // लिस्ट वर्तमान में खाली है    if (this.head === null) {       this.head = node;       this.tail = node;       this.length++;       return this.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++;    }    // नए नोड को लिस्ट में अगले नोड की ओर इंगित करें    node.next = currNode.next;    // अगले नोड के प्रीवियस को नए नोड की ओर इंगित करें    if (currNode.next != null) {       currNode.next.prev = node;    }    // अपने नोड को प्रीवियस नोड की ओर इंगित करें    node.prev = currNode;    // प्रीवियस नोड के नेक्स्ट को नए नोड की ओर इंगित करें    currNode.next = node;    // जांचें कि क्या इन्सर्ट किया गया एलिमेंट टेल पर था, यदि हां तो टेल को उस पर इंगित करें    if (this.tail.next != null) {       this.tail = this.tail.next;     }     return node; }

ध्यान दें कि हमने पोजीशन को अंतिम एलिमेंट के रूप में दिया है। ऐसा इसलिए है क्योंकि यदि आप पोजीशन प्रदान नहीं करते हैं, तो यह डिफ़ॉल्ट रूप से अंत में इन्सर्ट हो जाएगा।

आप इसका परीक्षण इस प्रकार कर सकते हैं:

उदाहरण

let list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.insert(15, 2); list.display();

आउटपुट

यह आउटपुट देगा:

10 <-> 30 <-> 15 <-> 20 <->

जैसा कि हम देख सकते हैं सभी एलिमेंट्स उस क्रम में हैं जो हम चाहते थे। हमने 15 को पोजीशन 2 के बाद इन्सर्ट करने की कोशिश की।


  1. JavaScript का उपयोग करके डबल लिंक्ड लिस्ट से एलिमेंट्स हटाना JavaScript का उपयोग करके डबल लिंक्ड लिस्ट से एलिमेंट्स हटाना

    लिंक्ड लिस्ट से एक एलिमेंट हटाना बहुत आसान है। हमें बस उस नोड से छुटकारा पाना है जिसे हम हटाना चाहते हैं, यानी उसका संदर्भ खो देना। हमें 3 मामलों पर विचार करने की आवश्यकता है: हेड से एलिमेंट हटाना: इस मामले में, हम बस head = head.next असाइन कर सकते हैं और अगले एलिमेंट से प्रीवियस लिंक हटा सकते हैं

  1. C भाषा में लिंक्ड लिस्ट में एलिमेंट्स इन्सर्ट करना C भाषा में लिंक्ड लिस्ट में एलिमेंट्स इन्सर्ट करना

    लिंक्ड लिस्ट डायनामिक मेमोरी एलोकेशन का उपयोग करती हैं, यानी वे आवश्यकतानुसार बढ़ती और सिकुड़ती हैं। इन्हें नोड्स का संग्रह परिभाषित किया जाता है। यहां, नोड्स के दो भाग होते हैं: डेटा और लिंक। डेटा, लिंक और लिंक्ड लिस्ट का प्रतिनिधित्व नीचे दिया गया है: लिंक्ड लिस्ट पर ऑपरेशन्स C भाषा में लिंक्ड

  1. C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार

    हमें डेटा और प्राथमिकता एक पूर्णांक मान के रूप में दी गई है और कार्य दिए गए प्राथमिकता के अनुसार डबल लिंक्ड लिस्ट बनाना और परिणाम प्रदर्शित करना है।कतार एक FIFO डेटा संरचना है जिसमें पहले डाला गया तत्व सबसे पहले हटाया जाता है। प्राथमिकता कतार एक प्रकार की कतार है जिसमें तत्वों को प्राथमिकता के आधार