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

লিংকড লিস্টের মাঝপথের নোড ডিলিট করা C++ প্রোগ্রামে


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

সমস্যা সমাধানটি সহজ। আমাদের দুটি পয়েন্টার থাকবে, একটি এক নোড করে আগাবে আরেকটি দু নোড করে আগাবে। দ্বিতীয় পয়েন্টার শেষ নোডে পৌঁছালে প্রথম পয়েন্টার লিংকড লিস্টের মাঝপথে থাকবে।

সমস্যা সমাধানের ধাপগুলো:

  • লিংকড লিস্ট নোডের জন্য একটি struct Node লিখুন।

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

  • মাঝপথের নোড ডিলিট করার ফাংশন লিখুন।

    • দুটি পয়েন্টার (slow এবং fast) লিংকড লিস্ট হেড পয়েন্টারের সাথে ইনিশিয়ালাইজ করুন।

    • ফাস্ট পয়েন্টার শেষে পৌঁছালে না পর্যন্ত লিংকড লিস্টের ওপর ইটারেট করুন।

    • স্লো পয়েন্টারকে এক নেক্সট নোডে সরান।

    • ফাস্ট পয়েন্টারকে নেক্সট নোডের নেক্সট নোডে সরান।

    • হেড পয়েন্টার রিটার্ন করুন

  • লিংকড লিস্ট প্রিন্ট করুন।

উদাহরণ

নিচে কোডটি দেওয়া হলো:

#include <bits/stdc++.h> using namespace std; struct Node {    int data;    struct Node* next; }; struct Node* deleteMiddleNode(struct Node* head) {    if (head == NULL) {       return NULL;    }    if (head->next == NULL) {       delete head;       return NULL;    }    struct Node* slow_ptr = head;    struct Node* fast_ptr = head;    struct Node* prev;    while (fast_ptr != NULL && fast_ptr->next != NULL) {       fast_ptr = fast_ptr->next->next;       prev = slow_ptr;       slow_ptr = slow_ptr->next;    }    prev->next = slow_ptr->next;    delete slow_ptr;    return head; } void printLinkedList(struct Node* node) {    while (node != NULL) {       cout << node->data << " -> ";       node = node->next;    }    cout << "Null" << endl; } Node* newNode(int data) {    struct Node* temp = new Node;    temp->data = data;    temp->next = NULL;    return temp; } int main() {    struct Node* head = newNode(1);    head->next = newNode(2);    head->next->next = newNode(3);    head->next->next->next = newNode(4);    head->next->next->next->next = newNode(5);    head->next->next->next->next->next = newNode(6);    cout << "Linked list before deleting middle node: ";    printLinkedList(head);    head = deleteMiddleNode(head);    cout << "Linked List after deleting middle node: ";    printLinkedList(head);    return 0; }

আউটপুট

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

Linked list before deleting middle node: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> Null Linked List after deleting middle node: 1 -> 2 -> 3 -> 5 -> 6 -> Null

উপসংহার

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


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

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

  3. সার্কুলার লিংকড লিস্টের মাঝপথ থেকে নোড ডিলিট করার পাইথন প্রোগ্রাম

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