leetcode-逐行讲解-链表反转
题目 https://leetcode.cn/problems/UHnkqh/description/
def reverseList(head: ListNode) -> ListNode:
#判断边界情况
#case1:空链表,直接返回头结点
#case2: 链表只有一个结点,直接返回此结点,即头结点
if head is None or head.next is None:
return head
#新建头结点,方便返回结果
res = ListNode()
#逆序后的链表,原来的头结点head会变成尾结点,res是新链表的头结点,让res先指向尾结点
res.next = head
#cur代表当前要处理的结点
cur = head.next
#顺序遍历链表的每个结点
while cur:
#此段处理每个结点,处理的结果是把cur放到头结点res的后面
#先把cur和之前的连线断开
head.next = cur.next
#然后把cur和res的后一个结点连在一起
cur.next = res.next
#最后把cur放在res后面,cur处理完
res.next = cur
#把cur后移
cur = head.next
#返回结果
return res.next