# Find modular node in a linked list

Given a singly linked list and a number k, find the last node whose n%k == 0, where n is the number of nodes in the list.

Examples:

```Input : list = 1->2->3->4->5->6->7
k = 3
Output : 6

Input : list = 3->7->1->9->8
k = 2
Output : 9
```

1. Take a pointer modularNode and initialize it with NULL. Traverse the linked list.
2. For every i%k=0, update modularNode.

## C++

 `// C++ program to find modular node in a linked list ` `#include ` ` `  `/* Linked list node */` `struct` `Node { ` `    ``int` `data; ` `    ``Node* next; ` `}; ` ` `  `/* Function to create a new node with given data */` `Node* newNode(``int` `data) ` `{ ` `    ``Node* new_node = ``new` `Node; ` `    ``new_node->data = data; ` `    ``new_node->next = NULL; ` `    ``return` `new_node; ` `} ` ` `  `/* Function to find modular node in the linked list */` `Node* modularNode(Node* head, ``int` `k) ` `{ ` `    ``// Corner cases ` `    ``if` `(k <= 0 || head == NULL) ` `        ``return` `NULL;    ` ` `  `    ``// Traverse the given list ` `    ``int` `i = 1; ` `    ``Node* modularNode = NULL; ` `    ``for` `(Node* temp = head; temp != NULL; temp = temp->next) { ` `        ``if` `(i % k == 0)  ` `            ``modularNode = temp; ` `         `  `        ``i++; ` `    ``} ` `    ``return` `modularNode; ` `} ` ` `  `/* Driver program to test above function */` `int` `main(``void``) ` `{ ` `    ``Node* head = newNode(1); ` `    ``head->next = newNode(2); ` `    ``head->next->next = newNode(3); ` `    ``head->next->next->next = newNode(4); ` `    ``head->next->next->next->next = newNode(5); ` `    ``int` `k = 2; ` `    ``Node* answer = modularNode(head, k); ` `    ``printf``(````" Modular node is "````); ` `    ``if` `(answer != NULL)  ` `        ``printf``(````"%d "````, answer->data); ` `    ``else` `        ``printf``(````"null "````); ` `    ``return` `0; ` `} `

## Java

 `// A Java program to find modular node in a linked list ` `public` `class` `GFG ` `{ ` `    ``// A Linkedlist node ` `    ``static` `class` `Node{ ` `        ``int` `data; ` `        ``Node next; ` `        ``Node(``int` `data){ ` `            ``this``.data = data; ` `        ``} ` `    ``} ` `     `  `    ``// Function to find modular node in the linked list ` `    ``static` `Node modularNode(Node head, ``int` `k) ` `    ``{ ` `        ``// Corner cases ` `        ``if` `(k <= ``0` `|| head == ``null``) ` `            ``return` `null``;    ` `      `  `        ``// Traverse the given list ` `        ``int` `i = ``1``; ` `        ``Node modularNode = ``null``; ` `        ``for` `(Node temp = head; temp != ``null``; temp = temp.next) { ` `            ``if` `(i % k == ``0``)  ` `                ``modularNode = temp; ` `              `  `            ``i++; ` `        ``} ` `        ``return` `modularNode; ` `    ``} ` `     `  `    ``// Driver code to test above function ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``Node head = ``new` `Node(``1``); ` `        ``head.next = ``new` `Node(``2``); ` `        ``head.next.next = ``new` `Node(``3``); ` `        ``head.next.next.next = ``new` `Node(``4``); ` `        ``head.next.next.next.next = ``new` `Node(``5``); ` `        ``int` `k = ``2``; ` `        ``Node answer = modularNode(head, k); ` `        ``System.out.print(``"Modular node is "``); ` `        ``if` `(answer != ``null``)  ` `            ``System.out.println(answer.data); ` `        ``else` `            ``System.out.println(``"null"``); ` `    ``} ` `} ` `// This code is contributed by Sumit Ghosh `

## C#

 `// C# program to find modular node in a linked list ` `using` `System; ` ` `  `class` `GFG  ` `{  ` `    ``// A Linkedlist node  ` `    ``public` `class` `Node ` `    ``{  ` `        ``public` `int` `data;  ` `        ``public` `Node next;  ` `        ``public` `Node(``int` `data) ` `        ``{  ` `            ``this``.data = data;  ` `        ``}  ` `    ``}  ` `     `  `    ``// Function to find modular node in the linked list  ` `    ``static` `Node modularNode(Node head, ``int` `k)  ` `    ``{  ` `        ``// Corner cases  ` `        ``if` `(k <= 0 || head == ``null``)  ` `            ``return` `null``;  ` `     `  `        ``// Traverse the given list  ` `        ``int` `i = 1;  ` `        ``Node modularNode = ``null``;  ` `        ``for` `(Node temp = head; temp != ``null``; temp = temp.next) ` `        ``{  ` `            ``if` `(i % k == 0)  ` `                ``modularNode = temp;  ` `             `  `            ``i++;  ` `        ``}  ` `        ``return` `modularNode;  ` `    ``}  ` `     `  `    ``// Driver code   ` `    ``public` `static` `void` `Main(String[] args)  ` `    ``{  ` `        ``Node head = ``new` `Node(1);  ` `        ``head.next = ``new` `Node(2);  ` `        ``head.next.next = ``new` `Node(3);  ` `        ``head.next.next.next = ``new` `Node(4);  ` `        ``head.next.next.next.next = ``new` `Node(5);  ` `        ``int` `k = 2;  ` ` `  `        ``Node answer = modularNode(head, k);  ` `        ``Console.Write(``"Modular node is "``);  ` ` `  `        ``if` `(answer != ``null``)  ` `            ``Console.WriteLine(answer.data);  ` `        ``else` `            ``Console.WriteLine(``"null"``);  ` `    ``}  ` `}  ` ` `  `// This code is contibuted by Rajput-JI `

/div>

Output:

```Modular node is 4
```