Consider:
Node reverse(Node head) { Node previous = null; Node current = head; Node forward; while (current != null) { forward = current.next; current.next = previous; previous = current; current = forward; } return previous; }
How exactly is it reversing the list?
I get that it first sets the second node to forward
. Then it says current.next
is equal to a null
node previous
. Then it says previous
is now current
. Lastly current
becomes forward
?
I can't seem to grasp this and how it's reversing. Can someone please explain how this works?
The code simply walks the list and inverts the links until it reaches the previous tail, which it returns as the new head.
Before:
Node 1 (Head) -> Node 2 -> Node 3 -> Node 4 (Tail) -> null
After:
null <- Node 1 (Tail) <- Node 2 <- Node 3 <- Node 4 (Head)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With