I am writing the code for reversing a linked list. This is the code
Node* reverseLinkedList(Node *head)
{
Node* temp = head;
Node* prev = NULL;
while(temp != nullptr) {
Node* next = temp->next;
temp->next = prev;
prev = temp;
temp = next;
}
return prev;
}
And it works perfectly. However, since the next node is just temp->next, why can't I use
Node* reverseLinkedList(Node *head)
{
Node* temp = head;
Node* prev = NULL;
while(temp != nullptr) {
Node* next = temp->next;
temp->next = prev;
prev = temp;
temp = temp->next;
}
return prev;
}
The above now does not work. I would appreciate some clarity on how nodes are working here.Thanks!
because the temp->next
were overwritten earlier
Node* reverseLinkedList(Node *head)
{
Node* temp = head;
Node* prev = NULL;
while(temp != nullptr) {
Node* next = temp->next;
temp->next = prev; // <<< here you assign new value
prev = temp;
temp = temp->next; // <<< here you use new value
}
return prev;
}