In Iterative solution for reversing a Linked List the core idea is as follows :
change link pointers :
next of current to previous
previous to current
current to next of current
Try imagining flow drawing 4 nodes and applying logic from code
Plus in the end , since ours whole linked list links has been reversed and previous pointer points to last node of actual list given in start,
ours previous pointer holds the new head of reversed list
Node* Reverse(Node *head)
{
if(head == NULL)
return head;
Node *prev = NULL , *temp , *curr = head;
while(curr != NULL)
{
temp = curr->next;
curr->next = prev;
prev = curr;
curr = temp;
}
head = prev;
return head;
}
change link pointers :
next of current to previous
previous to current
current to next of current
Try imagining flow drawing 4 nodes and applying logic from code
Plus in the end , since ours whole linked list links has been reversed and previous pointer points to last node of actual list given in start,
ours previous pointer holds the new head of reversed list
Node* Reverse(Node *head)
{
if(head == NULL)
return head;
Node *prev = NULL , *temp , *curr = head;
while(curr != NULL)
{
temp = curr->next;
curr->next = prev;
prev = curr;
curr = temp;
}
head = prev;
return head;
}
No comments:
Post a Comment