লিংকড লিস্ট থেকে একটি এলিমেন্ট সরানো খুব সহজ। আমাদের শুধু সেই নোডটি রিড করতে হবে যা আমরা সরাতে চাই, অর্থাৎ এর রেফারেন্স হারিয়ে ফেলতে হবে। ৩টি কেস বিবেচনা করতে হবে −
- হেড থেকে এলিমেন্ট সরানো: এই কেসে, আমরা সহজেই
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 <->