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++
