इस समस्या में, हमें एक सिंगली लिंक्ड लिस्ट LL और एक संख्या k दी जाती है। हमारा कार्य लिंक्ड लिस्ट में मॉड्यूलर नोड ढूंढना है।
समस्या विवरण – हमें लिंक्ड लिस्ट के अंतिम नोड को ढूंढना है जिसके लिए इंडेक्स k से विभाज्य है यानी i % k == 0।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट
ll = 3 -> 1 -> 9 -> 6 -> 8 -> 2, k = 4
आउटपुट
6
व्याख्या
तत्व 6 का इंडेक्स 4 है, जो 4 से विभाज्य है।
समाधान दृष्टिकोण
इस समस्या का एक सरल समाधान लिंक्ड लिस्ट के तत्वों को गिनने के लिए एक काउंटर बनाना है और मॉड्यूलर नोड को स्टोर करना है यानी वह नोड जिसके लिए i % k == 0, और n तक शर्त को संतुष्ट करने वाले सभी मानों के लिए अपडेट करना है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#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