কম্পিউটার টিউটোরিয়াল

C++-এ লিংকড লিস্ট থেকে x-র চেয়ে বড় সব নোড ডিলিট করা


এই টিউটোরিয়ালে আমরা শিখব কিভাবে সিংলি লিংকড লিস্ট থেকে সব প্রাইম নোড ডিলিট করা যায়।

সমস্যা সমাধানের ধাপগুলো দেখে নিই।

  • ডেটা এবং নেক্সট পয়েন্টার সহ স্ট্রাক্ট লিখুন।

  • সিংলি লিংকড লিস্টে নোড ইনসার্ট করার ফাংশন লিখুন।

  • ডামি ডেটা দিয়ে সিংলি লিংকড লিস্ট আরম্ভিক করুন।

  • সিংলি লিংকড লিস্ট ওভার ইটারেট করুন। বর্তমান নোডের ডেটা 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 ->

উপসংহার

টিউটোরিয়ালে যদি কোনো কোয়েরি থাকে, তবে কমেন্ট সেকশনে উল্লেখ করুন।


  1. C++-এ দেওয়া নোডের সাব-ট্রির সব নোডের XOR

  2. C++-এ একটি নির্দিষ্ট নোড থেকে দূরত্ব k-এ থাকা সব নোড প্রিন্ট করা

  3. C++-এ লিফ নোড থেকে দূরত্ব k-এ থাকা সব নোড প্রিন্ট করা

  4. পাইথন প্রোগ্রাম: লিস্টের সব মান দেওয়া মান থেকে বড় কিনা চেক করা