在这个问题上,我们得到一个单链表LL和一个数字k。我们的任务是在链接列表中查找模块化节点。
问题描述-我们需要找到链表的最后一个节点,索引可以被k整除,即i%k == 0。
让我们举个例子来了解这个问题,
ll = 3 -> 1 -> 9 -> 6 -> 8 -> 2, k = 4输出结果
6
The element 6 has index 4, which is divisible by 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<<"链表的Modular节点是 "; if (modularNode != NULL) cout<<modularNode->data; else cout<<"未找到!"; return 0; }输出结果
链表的Modular节点是 6