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

आइए देखें कि हम इसे कैसे लागू करेंगे:
उदाहरण
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; }
उदाहरण
आप इसका परीक्षण इस प्रकार कर सकते हैं:
let list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.remove(1); list.display(); list.insert(15, 2); list.remove(); list.display();
आउटपुट
यह आउटपुट देगा:
20 <-> 30 <-> 30 <-> 15 <->