हमें एक फ़ंक्शन इन्सर्ट (डेटा, स्थिति) बनाने की आवश्यकता है जो लिंक की गई सूची में दिए गए स्थान पर डेटा सम्मिलित करता है। हम निम्न चरणों का पालन करेंगे -
- नया नोड बनाएं
- जांचें कि सूची खाली है या नहीं। यदि यह नोड को सिर और पूंछ में जोड़ता है और वापस लौटता है।
- यदि नहीं, तो हम उस स्थिति में पुनरावृति करेंगे, जिसे हम currElem का उपयोग करके सम्मिलित करना चाहते हैं। हम currElem को currElem.next के बराबर बनाकर एक लिंक की गई सूची को पुनरावृत्त करते हैं।
अब हम लिंक्स को निम्न तरीके से बदलते हैं -
- सूची में अगले नोड के लिए नया नोड बिंदु बनाएं
- अगले नोड के पिछले बिंदु को नए नोड से बनाएं
- हमारे नोड को पिछले नोड की ओर इंगित करें
- पिछले नोड के अगले बिंदु को नए नोड में बनाएं
अंत में, हम currElem से बाकी सूची के लिंक को तोड़ते हैं और इसे हमारे बनाए गए नोड को इंगित करते हैं। अब नोड सूची में दिए गए स्थान पर है।
यहाँ उसी का एक उदाहरण दिया गया है -
अब आइए देखें कि हम इसे कैसे लागू करेंगे -
उदाहरण
<पूर्व>सम्मिलित करें (डेटा, स्थिति =यह। लंबाई) { नोड =नया यह। नोड (डेटा); यह लंबाई ++; // सूची वर्तमान में खाली है अगर (this.head ===null) {this.head =node; यह पूंछ =नोड; इसे वापस करें। सिर; } // सिर पर सम्मिलन अगर (स्थिति ==0) {नोड.प्रिव =शून्य; नोड.अगला =यह सिर; this.head.prev =नोड; यह सिर =नोड; इसे वापस करें। सिर; } चलो iter =1; चलो currNode =this.head; जबकि (currNode.next!=null &&iter <स्थिति) { currNode =currNode.next; इटर++; } // सूची में अगले नोड के लिए नया नोड बिंदु बनाएं node.next =currNode.next; // अगले नोड के पिछले बिंदु को नए नोड में बनाएं अगर (currNode.next!=null) { currNode.next.prev =node; } // हमारे नोड को पिछले नोड की ओर इंगित करें। // पिछले नोड का अगला बिंदु नए नोड currNode.next =नोड पर बनाएं; // जांचें कि क्या डाला गया तत्व टेल पर था, यदि हाँ तो इसे टेल पॉइंट बनाएं यदि (this.tail.next!=null) {this.tail =this.tail.next; } वापसी नोड;}ध्यान दें कि हमने अंतिम तत्व के रूप में स्थिति दी है। ऐसा इसलिए है क्योंकि यदि आप कोई स्थिति प्रदान नहीं करते हैं, तो इसे अंत में डिफ़ॉल्ट रूप से सम्मिलित कर दिया जाएगा।
आप इसका उपयोग करके इसका परीक्षण कर सकते हैं:
उदाहरण
let list =new LinkedList();list.insert(10);list.insert(20);list.insert(30);list.insert(15, 2);list.display();
आउटपुट
यह आउटपुट देगा -
10 <->30 <->15 <->20 <->
जैसा कि हम देख सकते हैं कि सभी तत्व हमारे इच्छित क्रम में हैं। हमने 2 के बाद की स्थिति में 15 डालने का प्रयास किया।