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

লিংকড লিস্টে মডুলার নোড খুঁজে বের করা C++-এ

এই সমস্যায়, আমাদের একটি সিঙ্গলি লিংকড লিস্ট LL এবং একটি সংখ্যা k দেওয়া আছে। আমাদের কাজ হল লিংকড লিস্টে মডুলার নোড খুঁজে বের করা।

সমস্যা বর্ণনা - আমাদের লিংকড লিস্টের শেষ নোডটি খুঁজে বের করতে হবে যার ইন্ডেক্স k দিয়ে বিভাজ্য, অর্থাৎ i % k == 0।

উদাহরণ

ইনপুট

ll = 3 → 1 → 9 → 6 → 8 → 2, k = 4

আউটপুট

6

ব্যাখ্যা

এলিমেন্ট ৬-এর ইন্ডেক্স ৪, যা ৪ দিয়ে বিভাজ্য।

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

এই সমস্যার সহজ সমাধান হল একটি কাউন্টার তৈরি করা লিংকড লিস্টের এলিমেন্ট গণনা করতে এবং মডুলার নোড স্টোর করা অর্থাৎ যেটির i % k == 0, এবং এই শর্ত সন্তুষ্ট করে এমন সব মান পর্যন্ত আপডেট করা।

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

#include <iostream>
using namespace std;

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

Node* newNode(int data) {
    Node* new_node = new Node;
    new_node->data = data;
    new_node->next = NULL;
    return new_node;
}

Node* findModularNodeLL(Node* head, int k) {
    if (k <= 0 || head == NULL)
        return NULL;
    
    int i = 1;
    Node* modNode = NULL;
    
    for (Node* currNode = head; currNode != NULL; currNode = currNode->next) {
        if (i % k == 0)
            modNode = currNode;
        i++;
    }
    
    return modNode;
}

int main() {
    Node* head = newNode(3);
    head->next = newNode(1);
    head->next->next = newNode(9);
    head->next->next->next = newNode(6);
    head->next->next->next->next = newNode(8);
    head->next->next->next->next->next = newNode(2);
    
    int k = 4;
    Node* modularNode = findModularNodeLL(head, k);
    
    cout << "The Modular node of linked list is ";
    if (modularNode != NULL)
        cout << modularNode->data;
    else
        cout << "Not found!";
    
    return 0;
}

আউটপুট

The Modular node of linked list is 6
  1. মাল্টিলেভেল লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  2. C++-এ লিংকড লিস্টে লুপের দৈর্ঘ্য বের করুন

  3. C++-এ ডাবলি লিংকড লিস্টের আকার (Size) বের করার প্রোগ্রাম

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