给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode prev = null; // 前一个节点
ListNode current = head; // 当前节点
ListNode nextNode = null; // 下一个节点
// 遍历链表进行反转
while (current != null) {
nextNode = current.next; // 保存下一个节点
current.next = prev; // 当前节点的next指向前一个节点
prev = current; // 前一个节点指向当前节点
current = nextNode; // 当前节点移动到下一个节点
}
return prev; // prev会是新的头结点
}
}