给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
提示:
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
实现:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000
其中,ListNode 是链表的节点类,val 表示节点的值,next 表示下一个节点。reverseList 函数接受链表的头节点 head,返回反转后的链表头节点。
具体实现中,定义两个指针 prev 和 curr,初始时分别指向 None 和 head。然后依次遍历链表中的每个节点,每次将 curr 的下一个节点保存到 next_node 中,然后将 curr 的 next 指向 prev,表示将 curr 反转。接着更新 prev 和 curr,将它们分别指向 curr 和 next_node。遍历完成后,返回 prev,即为反转后的链表的头节点。