Tutorialspoint.dev

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 <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(" 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


Output:

Modular node is 4

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter