206. 反转链表
题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
思路
- 设置三个指针:
pre记录反转后链表的头节点;cur记录未反转链表的头节点;pos记录未反转链表的下一个节点 - 每次操作的核心节点
cur是未反转链表的头节点,我们在记录下cur的下一个节点pos后,将cur指向反转后链表的头节点pre - 然后更新节点数据:令
pre=cur,cur=pos,pos=cur.next - 最后重复操作2
几个需要注意的点:
- 开始时记得初始化节点,反转第一个节点时要让它指向
None - 对于,只有一个节点,或为空的链表,直接返回它自身
代码
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if head and head.next:
pre = head
cur = head.next
pos = cur.next
pre.next = None
while 1:
cur.next = pre
pre = cur
cur = pos
if not cur:
break
pos = cur.next
return pre
return head
1845

被折叠的 条评论
为什么被折叠?



