C# Program For Writing A Function To Get Nth Node In A Linked List
Last Updated :
11 Jul, 2022
Write a GetNth() function that takes a linked list and an integer index and returns the data value stored in the node at that index position.
Example:
Input: 1->10->30->14, index = 2
Output: 30
The node at index 2 is 30
Algorithm:
1. Initialize count = 0
2. Loop through the link list
a. If count is equal to the passed index then return current
node
b. Increment count
c. Change current to point to next of the current.
Implementation:
C#
using System;
using System.Diagnostics;
public class Node
{
public int data;
public Node next;
public Node( int d)
{
data = d;
next = null ;
}
}
class LinkedList
{
Node head;
public int GetNth( int index)
{
Node current = head;
int count = 0;
while (current != null )
{
if (count == index)
return current.data;
count++;
current = current.next;
}
Debug.Assert( false );
return 0;
}
public void push( int new_data)
{
Node new_Node = new Node(new_data);
new_Node.next = head;
head = new_Node;
}
public static void Main(String[] args)
{
LinkedList llist = new LinkedList();
llist.push(1);
llist.push(4);
llist.push(1);
llist.push(12);
llist.push(1);
Console.WriteLine( "Element at index 3 is " +
llist.GetNth(3));
}
}
|
Output:
Element at index 3 is 4
Time Complexity: O(n)
Space complexity: O(1) using constant space
Method 2- With Recursion:
This method is contributed by MY_DOOM.
Algorithm:
getnth(node, n)
1. Initialize count = 0
2. if count==n
return node->data
3. else
return getnth(node->next, n-1)
Implementation:
C#
using System;
class GFG
{
public class Node
{
public int data;
public Node next;
public Node( int data)
{
this .data = data;
}
}
static Node push(Node head, int new_data)
{
Node new_node = new Node(new_data);
new_node.data = new_data;
new_node.next = head;
head = new_node;
return head;
}
static int GetNth(Node head, int n)
{
if (head == null )
return -1;
int count = 0;
if (count == n)
return head.data;
return GetNth(head.next, n - 1);
}
public static void Main()
{
Node head = null ;
head = push(head, 1);
head = push(head, 4);
head = push(head, 1);
head = push(head, 12);
head = push(head, 1);
Console.Write( "Element at index 3 is {0}" ,
GetNth(head, 3));
}
}
|
Output:
Element at index 3 is 4
Time Complexity: O(n)
Space Complexity : O(n) for call stack since using recursion.
Please refer complete article on Write a function to get Nth node in a Linked List for more details!
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...