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

Python链表反转函数问题求助:为何仅返回单个节点而非完整链表?

链表反转函数的问题排查与修复

问题重现

需求:定义一个函数,输入链表头节点ListNode,反转该链表并返回反转后链表的头节点。
示例:输入1->2->3->4->5->NULL,输出5->4->3->2->1->NULL
当前代码运行后仅返回单个节点,无法输出完整反转链表。

用户提供的原代码:

class ListNode(object):
    def __init__(self, val: int):
        self.val: int = val
        self.next: Optional[ListNode] = None

class Solution(object):
    def reverseList(self, head):
        if not head:
            return None
        l = []
        while head:
            l.append(head.val)
            head = head.next
        l = l[::-1]
        hn = ListNode(l[0]) 
        for i in range(1, len(l)):
            hn.next = ListNode(l[i])
            nnext = hn.next
            hn = nnext
        return hn

问题分析

核心bug出在链表重建的循环逻辑中:

  • 初始化hn时,它是反转后链表的头节点(对应示例中的5),但每次循环都会把hn移动到新创建的子节点上(依次变成4、3、2、1)。
  • 循环结束后,hn指向的是反转链表的最后一个节点(值为1),而这个节点的next为None,所以返回的只是单个节点,丢失了整个链表的引用链。

修复后的代码

解决思路是保留反转链表的头节点引用,用一个临时指针来遍历构建后续节点:

class ListNode(object):
    def __init__(self, val: int):
        self.val: int = val
        self.next: Optional[ListNode] = None

class Solution(object):
    def reverseList(self, head):
        if not head:
            return None
        l = []
        while head:
            l.append(head.val)
            head = head.next
        l = l[::-1]
        # 固定保存反转链表的头节点
        new_head = ListNode(l[0])
        # 用current指针遍历构建后续节点
        current = new_head
        for i in range(1, len(l)):
            current.next = ListNode(l[i])
            current = current.next
        return new_head

更高效的原地反转方案

上述方法需要额外数组存储节点值,空间复杂度为O(n)。推荐使用原地反转法,无需额外空间,时间复杂度仍为O(n):

class Solution(object):
    def reverseList(self, head):
        prev = None
        current = head
        while current:
            # 提前保存下一个节点,避免反转后丢失引用
            next_node = current.next
            # 反转当前节点的指向
            current.next = prev
            # 移动指针,处理下一个节点
            prev = current
            current = next_node
        # 循环结束后,prev就是反转后的头节点
        return prev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:55:13