Skip to content
Related Articles

Related Articles

Find modular node in a linked list

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 15 Jul, 2022

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.

Implementation:

C++




// C++ program to find modular node in a linked list
#include <bits/stdc++.h>
 
/* 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("\nModular node is ");
    if (answer != NULL)
        printf("%d\n", answer->data);
    else
        printf("null\n");
    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

Python3




# Python3 program to find modular node
# in a linked list
import math
 
# Linked list node
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
 
# Function to create a new node
# with given data
def newNode(data):
    new_node = Node(data)
    new_node.data = data
    new_node.next = None
    return new_node
 
# Function to find modular node
# in the linked list
def modularNode(head, k):
     
    # Corner cases
    if (k <= 0 or head == None):
        return None
 
    # Traverse the given list
    i = 1
    modularNode = None
    temp = head
    while (temp != None):
        if (i % k == 0):
            modularNode = temp
 
        i = i + 1
        temp = temp.next
    return modularNode
 
# Driver Code
if __name__ == '__main__':
    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)
    k = 2
    answer = modularNode(head, k)
    print("Modular node is", end = ' ')
    if (answer != None):
        print(answer.data, end = ' ')
    else:
        print("None")
 
# This code is contributed by Srathore

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 contributed by Rajput-JI

Javascript




<script>
 
// A JavaScript program to find
// modular node in a linked list
  
    // A Linkedlist node
     class Node {
        constructor(val) {
            this.data = val;
            this.next = null;
        }
    }
    // Function to find modular node in the linked list
    function modularNode(head , k) {
        // Corner cases
        if (k <= 0 || head == null)
            return null;
 
        // Traverse the given list
        var i = 1;
        var modularNode = null;
        for (temp = head; temp != null; temp = temp.next) {
            if (i % k == 0)
                modularNode = temp;
 
            i++;
        }
        return modularNode;
    }
 
    // Driver code to test above function
     
        var 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);
        var k = 2;
        var answer = modularNode(head, k);
        document.write("Modular node is ");
        if (answer != null)
            document.write(answer.data);
        else
            document.write("null");
 
// This code contributed by Rajput-Ji
 
</script>

Output

Modular node is 4

Complexity Analysis:

  • Time Complexity: O(n).
  • Space complexity: O(1).

This article is contributed by Prakriti Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!