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