leetcode-逐行讲解-链表反转


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


文章作者: jasme
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 jasme !
  目录