In this post, we are going to provide a hackerrank solution to Reverse a Linked List.
Linked list: It is a linear data structure, Each element of the following linked list is called SinglyLinkedListNode.
SinglyLinkedListNode { int data; SinglyLinkedListNode* next; };
Each SinglyLinkedListNode is divided into two parts:
- The first part contains the data of the element.
- The second part contains the address of the next SinglyLinkedListNode in the list (next).
Update: check out how to reverse a linked list using recursion in c++
Quick Algorithm to reverse a linked list
- While(current!=NULL), repeat steps 2, 3 and 4.
- Save the next node in the "n" pointer.
- Make the current node point to the previous node.
- Just update the previous and current node
- At last, update the head node to the previous node.
Reverse a Linked List Hackerrank Solution
SinglyLinkedListNode* reverse(SinglyLinkedListNode*&head) { SinglyLinkedListNode*current = head; SinglyLinkedListNode*prev = NULL; SinglyLinkedListNode*n; while(current!=NULL) { //Save the next node n=current->next; //Make the current node point to previous node current->next=prev; //Just update previous and current node prev=current; current=n; } head=prev; return head; }
About this post: In this program, we created a function in c++ to reverse a linked list. This program is the solution to the hackerrank problem for reversing a linked list. If you have any doubts related to this program, Let me know in the comment section.
Related posts:
Linked Lists Data Structure
Menu Driven Program for Singly Linked List in C++