এই সমস্যায়, আমাদের একটি সিঙ্গলি লিংকড লিস্ট 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