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

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

আমাদের একটি সিংলি লিংকড লিস্ট দেওয়া আছে, এবং আমাদের কাজ হল সেই লিস্ট থেকে লাস্ট নোড বাদ দেওয়া। এই সমস্যায়, আমরা সিম্পলি দেয়া লিস্ট ট্রাভার্স করব এবং লাস্ট নোডটি বাদ দিব।

সমাধানের পদ্ধতি

এই পদ্ধতিতে, আমরা দেয়া লিস্টে যাব, এবং প্রিভিয়াস নোড এবং কারেন্ট নোড ট্র্যাক রাখব। এখন যখন আমাদের কারেন্ট নোড লাস্ট নোড হয়ে যাবে, আমরা previous->next কে NULL করব এবং কারেন্ট নোডটি ডিলিট করব।

উদাহরণ প্রোগ্রাম

#include <iostream>
using namespace std;

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

void push(struct Node** ref, int new_data) { // নোড পুশ করা
    struct Node* new_n = new Node;
    new_n->data = new_data;
    new_n->next = (*ref);
    (*ref) = new_n;
}

int main() {
    Node* head = NULL;
    push(&head, 12);
    push(&head, 29);
    push(&head, 11);
    push(&head, 23);
    push(&head, 8);
    auto curr = head, prev = head;
    if (!curr || !curr->next) // যদি লিস্টে শুধু এক এলিমেন্ট থাকে বা লিস্ট খালি
        cout << "Empty\n";
    else {
        while (curr) { // যতক্ষণ curr != NULL
            if (!curr->next) {
                prev->next = NULL;
                delete(curr); // স্পেস ফ্রি করা
                break;
            }
            prev = curr;
            curr = curr->next; // পরের নোডে যাওয়া
        }
    }
    for (Node* temp = head; temp != NULL; temp = temp->next) // ডেটা প্রিন্ট করা
        cout << temp->data << " ";
    return 0;
}

আউটপুট

8 23 11 29

উপরোক্ত কোডের ব্যাখ্যা

এই পদ্ধতিতে, আমরা অ্যারে ট্রাভার্স করি, কারেন্ট নোড এবং প্রিভিয়াস নোড ট্র্যাক রেখে। এখন যখন আমাদের কারেন্ট নোড লাস্ট নোড হয়ে যায়, আমরা previous->next কে NULL করি এবং কারেন্ট নোড ডিলিট করি। দেয়া প্রোগ্রামের সমগ্র টাইম কমপ্লেক্সিটি O(N), যেখানে N হল আমাদের দেয়া লিস্টের আকার।

Time Complexity − O(N)

N: আমাদের অ্যারের আকার

উপসংহার

এই আর্টিকেলে, আমরা দেয়া লিংকড লিস্ট থেকে লাস্ট নোড বাদ দেওয়ার সমস্যা সমাধান করেছি। আমরা এই সমস্যায় C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি শিখেছি। আমরা একই প্রোগ্রাম অন্যান্য ল্যাঙ্গুয়েজে লিখতে পারি যেমন C, Java, Python এবং অন্যান্য ল্যাঙ্গুয়েজ। আশা করি আপনি এই আর্টিকেলটিকে সহায়ক খুঁজে পাবেন।

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

  2. সি++-এ সার্কুলার লিংকড লিস্টের নোডগুলোর যোগফল (Sum)

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

  4. ডাবলি লিংকড লিস্ট দিয়ে প্রায়োরিটি কিউ বাস্তবায়ন C++-তে