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
- Take a pointer modularNode and initialize it with NULL. Traverse the linked list.
- 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).