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