Some of the interesting ways to reverse a linked list in place

0 / 2517
reverse linked list in place

In this blog, I will cover some approaches using which, you can reverse linked list in place. Consider we have a linked list marked by the node structure below (in C language)

struct node {

    int data;

    struct node* ptr;



Below is a recursive approach for reversing the linked list and then printing it.

Below is the code snippet


Reverse a linked list in place





NODE *result = NULL;
NODE *current = *head;
NODE *next;
while(current != NULL) {
    next = current->link;
    current->link = result;
    result = current;
    current = next;
*head = result;  // assign the reverse list back to head node of the list
The result node stores the result (the reversed linked list). Current node points to the current node while traversing and this will be used as an iterator to loop through the linked list. While traversing, we first save the next node to current in a ptr , then we link current node to the result(reverse list marked by NULL value initially as seen). We then store the current node ptr in the result(reverse list) and then increment current node ptr to point to the next node.Eventually, I assign the reverse list back to the head (first node of the list so that the list is reversed in place).
Below is the pictorial representation for better understanding.
current = 1
result = NULL
Below is the complete code to create/insert/print and reverse a linked list (another approach) using C language

Program to create/insert print and reverse a linked list


ID provided is not a Gistpen repo.

Feel free to comment, if you have any doubts or queries.




An avid reader, responsible for generating creative content ideas for His interests include algorithms and programming languages. Blogging is a hobby and passion.

Related Posts