Given the head
of a singly linked list, reverse the list, and return the reversed list.
Example 1
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
Example 2
Input: head = [1,2]
Output: [2,1]
Example 3
Input: head = []
Output: []
Constraints
- The number of nodes in the list is the range
[0, 5000]
. -5000 <= Node.val <= 5000
There are 3 key variables we use to reverse a linked list:
head
(global)tail
(global)next
(local)
head
points to the given linked list that we want to reverse.
tail
points to the reversed linked list, and this will be the answer.
next
is used as a buffer to break the head of linked list and store the next node of it.
The steps are:
- Use
next
to break the head of the linked list. - Point the
tail
to the head oftail
- Re-point the
head
tonext
, which means re-defined the head of the linked list. - Iterate it until
head
is point to null (all list node has been visited)