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

C++-এ লিংকড লিস্টে নির্দিষ্ট পজিশনে একটি নোড মুছে ফেলা

এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি সিঙ্গলি লিংকড লিস্টে দেওয়া পজিশনে একটি নোড মুছে ফেলতে হয়।

সমস্যা সমাধানের ধাপসমূহ

  • ডেটা এবং নেক্সট (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->

নিষ্কর্ষ

এই টিউটোরিয়াল সম্পর্কে আপনার কোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।

  1. মাল্টিলেভেল লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  2. C++-এ লিংকড লিস্ট র‍্যান্ডম নোড

  3. C++-এ একটি লিংকড লিস্ট সার্কুলার লিংকড লিস্ট কিনা চেক করা

  4. পাইথনে লিংকড লিস্টে নোড ডিলিট