C Program For Writing A Function To Get Nth Node In A Linked List
Last Updated :
22 Jun, 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
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node* next;
};
void push( struct Node** head_ref,
int new_data)
{
struct Node* new_node =
( struct Node*) malloc ( sizeof ( struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
int GetNth( struct Node* head,
int index)
{
struct Node* current = head;
int count = 0;
while (current != NULL)
{
if (count == index)
return (current->data);
count++;
current = current->next;
}
assert (0);
}
int main()
{
struct Node* head = NULL;
push(&head, 1);
push(&head, 4);
push(&head, 1);
push(&head, 12);
push(&head, 1);
printf ( "Element at index 3 is %d" ,
GetNth(head, 3));
getchar ();
}
|
Output:
Element at index 3 is 4
Time Complexity: O(n)
Space Complexity : O(1) since using constant space for nodes and variables.
Please refer complete article on Write a function to get Nth node in a Linked List for more details!
Share your thoughts in the comments
Please Login to comment...