You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python反转链表代码报错:'NoneType'无'next'属性,求排查与修复

问题分析与修复

报错原因

你这段代码的问题出在空链表场景:当输入的head是None(也就是链表为空)时,currentNode会被赋值为None,这时候执行while currentNode.next is not None就会直接触发'NoneType' object has no attribute 'next'的错误。另外原循环条件只处理到倒数第二个节点,虽然核心逻辑没问题,但没覆盖空链表这种边界情况。

修复方案

把循环条件改成while currentNode is not None,同时把循环外的currentNode.next=previousNode移到循环内部执行——这样不管是空链表、单节点链表还是多节点链表,都能正确处理。

修复后的代码:

class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        currentNode = head
        previousNode = None
        while currentNode is not None:
            temp = currentNode.next  # 保存下一个节点
            currentNode.next = previousNode  # 当前节点指向前一个节点
            previousNode = currentNode  # 前一个节点后移
            currentNode = temp  # 当前节点后移
        return previousNode  # 循环结束后,previousNode就是反转后的头节点

逻辑说明

  • 空链表:currentNode一开始就是None,循环不执行,直接返回previousNode(也就是None),符合预期。
  • 单节点链表:循环执行一次,把该节点的next设为None,previousNode变成这个节点,最后返回它,正确。
  • 多节点链表:每次循环把当前节点的指针反转,逐步推进,最后previousNode会停在原链表的最后一个节点,也就是反转后的头节点,完美契合你的核心思路。

内容的提问来源于stack exchange,提问作者Aly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:08