Skip to content
Related Articles
Open in App
Not now

Related Articles

C Program For Writing A Function To Get Nth Node In A Linked List

Improve Article
Save Article
  • Last Updated : 22 Jun, 2022
Improve Article
Save Article

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. 


Input:  1->10->30->14,  index = 2
Output: 30  
The node at index 2 is 30


1. Initialize count = 0
2. Loop through the link list
     a. If count is equal to the passed index then return current
     b. Increment count
     c. Change current to point to next of the current.



// C program to find n'th
// node in linked list
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
// Link list node
struct Node
    int data;
    struct Node* next;
/* Given a reference (pointer to
   pointer) to the head of a list
   and an int, push a new node on
   the front of the list. */
void push(struct Node** head_ref,
          int new_data)
    // Allocate node
    struct Node* new_node =
           (struct Node*)malloc(sizeof(struct Node));
    // Put in the data
    new_node->data = new_data;
    // Link the old list
    // off the new node
    new_node->next = (*head_ref);
    // Move the head to point
    // to the new node
    (*head_ref) = new_node;
// Takes head pointer of
// the linked list and index
// as arguments and return
// data at index
int GetNth(struct Node* head,
           int index)
    struct Node* current = head;
    // The index of the node we're
    // currently looking at
    int count = 0;
    while (current != NULL)
        if (count == index)
            return (current->data);
        current = current->next;
    /* If we get to this line, the
       caller was asking for a
       non-existent element so we
        assert fail */
// Driver Code
int main()
    // Start with the empty list
    struct Node* head = NULL;
    // Use push() to construct list
    // 1->12->1->4->1
    push(&head, 1);
    push(&head, 4);
    push(&head, 1);
    push(&head, 12);
    push(&head, 1);
    // Check the count function
    printf("Element at index 3 is %d",
            GetNth(head, 3));


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!

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!