এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি ডাবলি লিংকড লিস্টে একটি নির্দিষ্ট নোড মুছে ফেলতে হয়।
সমস্যা সমাধানের ধাপসমূহ
ডেটা, প্রিভিয়াস (prev) এবং নেক্সট (next) পয়েন্টার সহ একটি স্ট্রাকচার (struct) লিখুন।
ডাবলি লিংকড লিস্টে নোড ইনসার্ট করার জন্য একটি ফাংশন লিখুন।
ডামি ডেটা দিয়ে ডাবলি লিংকড লিস্টটি ইনিশিয়ালাইজ করুন।
মুছে ফেলার জন্য একটি নোড নির্বাচন করুন।
নোড মুছে ফেলার জন্য একটি ফাংশন লিখুন। নোড মুছে ফেলার সময় নিম্নলিখ তিনটি কেস বিবেচনা করুন:
যদি নোডটি হেড নোড হয়, তবে হেডকে নেক্সট নোডে সরিয়ে দিন।
যদি নোডটি মিডিল নোড হয়, তবে নেক্সট নোডকে প্রিভিয়াস নোডের সাথে লিঙ্ক করুন।
যদি নোডটি শেষ নোড হয়, তবে প্রিভিয়াস নোডের লিঙ্কটি সরিয়ে দিন।
উদাহরণ
নিচে সম্পূর্ণ কোডটি দেওয়া হলো:
#include <bits/stdc++.h>
using namespace std;
struct Node {
int data;
Node *prev, *next;
};
void deleteNode(Node** head_ref, Node* del) {
if (*head_ref == NULL || del == NULL) {
return;
}
if (*head_ref == del) {
*head_ref = del->next;
}
if (del->next != NULL) {
del->next->prev = del->prev;
}
if (del->prev != NULL) {
del->prev->next = del->next;
}
free(del);
return;
}
void insertNode(Node** head_ref, int new_data) {
Node* new_node = new Node();
new_node->data = new_data;
new_node->prev = NULL;
new_node->next = (*head_ref);
if ((*head_ref) != NULL) {
(*head_ref)->prev = new_node;
}
(*head_ref) = new_node;
}
void printLinkedList(Node* node) {
while (node != NULL) {
cout << node->data << " -> ";
node = node->next;
}
}
int main() {
Node* head = NULL;
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
insertNode(&head, 4);
insertNode(&head, 5);
cout << "Linked List before deletion:" << endl;
printLinkedList(head);
deleteNode(&head, head->next);
cout << "\nLinked List after deletion:" << endl;
printLinkedList(head);
return 0;
}
আউটপুট
উপরের প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফলটি পাওয়া যাবে:
Linked List before deletion: 5 -> 4 -> 3 -> 2 -> 1 -> Linked List after deletion: 5 -> 3 -> 2 -> 1 ->
নিষ্কর্ষ
এই টিউটোরিয়াল সম্পর্কে আপনার কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।