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