লিঙ্ক করা তালিকায় একটি উপাদান সরানো খুবই সহজ৷ আমরা শুধু নোড থেকে পরিত্রাণ পেতে চাই যা আমরা অপসারণ করতে চাই, অর্থাৎ, এর রেফারেন্স হারাতে হবে। 3টি ক্ষেত্রে আমাদের বিবেচনা করতে হবে -
- হেড থেকে একটি উপাদান অপসারণ:এই ক্ষেত্রে, আমরা কেবল head =head.next বরাদ্দ করতে পারি এবং পরবর্তী উপাদান থেকে পূর্ববর্তী লিঙ্কটি সরাতে পারি। এইভাবে আমরা প্রথম উপাদানের রেফারেন্স হারাবো। এবং আউট হেড দ্বিতীয় উপাদানের দিকে নির্দেশ করা শুরু করবে।
- টেল থেকে একটি উপাদান অপসারণ:এই ক্ষেত্রে, আমরা কেবলমাত্র দ্বিতীয় শেষ নোডের node.nextটিকে শূন্য করে দিতে পারি এবং আমরা তালিকা থেকে শেষ উপাদানটি সরিয়ে ফেলব। আমরা বর্তমান নোডের দিকে নির্দেশ করতে লেজটিও আপডেট করি।
- এর মধ্যে থেকে একটি উপাদান সরানো:এটি আরও জটিল। এই ক্ষেত্রে, আমরা যে নোডটি সরাতে চাই তার আগে নোডটি তৈরি করতে হবে, আমরা যে নোডটি সরাতে চাই তার পরে নোডের দিকে সরাসরি নির্দেশ করতে। সুতরাং, 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 <->