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

C++-এ ডাবলি লিংকড লিস্টে একটি নোড মুছে ফেলা

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

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

  • ডেটা, প্রিভিয়াস (prev) এবং নেক্সট (next) পয়েন্টার সহ একটি স্ট্রাকচার (struct) লিখুন।

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

  • ডামি ডেটা দিয়ে ডাবলি লিংকড লিস্টটি ইনিশিয়ালাইজ করুন।

  • মুছে ফেলার জন্য একটি নোড নির্বাচন করুন।

  • নোড মুছে ফেলার জন্য একটি ফাংশন লিখুন। নোড মুছে ফেলার সময় নিম্নলিখ তিনটি কেস বিবেচনা করুন:

    • যদি নোডটি হেড নোড হয়, তবে হেডকে নেক্সট নোডে সরিয়ে দিন।

    • যদি নোডটি মিডিল নোড হয়, তবে নেক্সট নোডকে প্রিভিয়াস নোডের সাথে লিঙ্ক করুন।

    • যদি নোডটি শেষ নোড হয়, তবে প্রিভিয়াস নোডের লিঙ্কটি সরিয়ে দিন।

উদাহরণ

নিচে সম্পূর্ণ কোডটি দেওয়া হলো:

#include <bits/stdc++.h> 
using namespace std; 

struct Node { 
    int data; 
    Node *prev, *next; 
}; 

void deleteNode(Node** head_ref, Node* del) { 
    if (*head_ref == NULL || del == NULL) { 
        return; 
    } 
    if (*head_ref == del) { 
        *head_ref = del->next; 
    } 
    if (del->next != NULL) { 
        del->next->prev = del->prev; 
    } 
    if (del->prev != NULL) { 
        del->prev->next = del->next; 
    } 
    free(del); 
    return; 
} 

void insertNode(Node** head_ref, int new_data) { 
    Node* new_node = new Node(); 
    new_node->data = new_data; 
    new_node->prev = NULL; 
    new_node->next = (*head_ref); 
    if ((*head_ref) != NULL) { 
        (*head_ref)->prev = new_node; 
    } 
    (*head_ref) = new_node; 
} 

void printLinkedList(Node* node) { 
    while (node != NULL) { 
        cout << node->data << " -> "; 
        node = node->next; 
    } 
} 

int main() { 
    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, head->next); 
    cout << "\nLinked List after deletion:" << endl; 
    printLinkedList(head); 
    return 0; 
}

আউটপুট

উপরের প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফলটি পাওয়া যাবে:

Linked List before deletion: 5 -> 4 -> 3 -> 2 -> 1 -> 
Linked List after deletion: 5 -> 3 -> 2 -> 1 ->

নিষ্কর্ষ

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

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

  2. সি++-এ ডাবলি লিংকড সার্কুলার লিস্ট

  3. ডাবলি লিঙ্কড লিস্ট বাস্তবায়নের C++ প্রোগ্রাম

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