हमें एक फ़ंक्शन insert(data, position) बनाने की आवश्यकता है जो दिए गए पोजीशन पर लिंक्ड लिस्ट में डेटा इन्सर्ट करता है। हम निम्न चरणों का पालन करेंगे:
- एक नया नोड बनाएं
- जांचें कि क्या लिस्ट खाली है। यदि हां तो नोड को हेड और टेल में जोड़ें और लौटें।
- यदि नहीं, तो हम
currElemका उपयोग करके उस पोजीशन पर इटरेट करेंगे जहां हम इसे इन्सर्ट करना चाहते हैं। हम लिंक्ड लिस्ट परcurrElem = currElem.nextबनाकर इटरेट करते हैं।
अब हम निम्न तरीके से लिंक्स बदलते हैं:
- नए नोड को लिस्ट में अगले नोड की ओर इंगित करें
- अगले नोड के प्रीवियस को नए नोड की ओर इंगित करें
- अपने नोड को प्रीवियस नोड की ओर इंगित करें
- प्रीवियस नोड के नेक्स्ट को नए नोड की ओर इंगित करें
अंत में, हम currElem से लिस्ट के बाकी हिस्से का लिंक तोड़ते हैं और इसे हमारे बनाए गए नोड की ओर इंगित करते हैं। अब नोड दिए गए पोजीशन पर लिस्ट में है।
यहां इसका एक चित्रण है:

आइए देखें कि हम इसे कैसे लागू करेंगे:
उदाहरण
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 के बाद इन्सर्ट करने की कोशिश की।