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

Python用dummy head技术合并有序链表触发初始化参数错误如何解决

问题解决方法

错误原因

你自定义的LinkedList类的__init__构造方法要求必须传入位置参数data,但你创建dummy头节点实例时没有传入任何参数,因此触发参数缺失报错。

修复方案

dummy节点本身仅作为临时占位的表头使用,它的data属性不会被合并逻辑用到,最终返回的结果是dummy.next,因此你可以传入任意合法值作为dummy的data参数,比如None、0都可以。

需要修改两处代码:

  1. 调整merge_lists函数中dummy节点的创建逻辑:
    将原来的
dummy = LinkedList()

修改为

dummy = LinkedList(None)
  1. 调整结果输出逻辑,调用你定义的print_list函数打印链表,否则直接打印会输出链表对象的内存地址:
    将原来的
print(merge_lists(node1, node2))

修改为

print_list(merge_lists(node1, node2))

完整可运行代码

class LinkedList:
    def __init__(self, data):
        self.data = data
        self.next = None


def print_list(head: LinkedList) -> None:
    while head:
        print(head.data, end=" -> ")
        head = head.next
    print("None")


def merge_lists(headA, headB):
    dummy = LinkedList(None)
    curr = dummy

    while headA != None and headB != None:
        if headA.data < headB.data:
            curr.next = headA
            headA = headA.next
        else:
            curr.next = headB
            headB = headB.next

        curr = curr.next

    if headA != None:
        curr.next = headA
    else:
        curr.next = headB

    return dummy.next


node1 = LinkedList(1)
node1.next = LinkedList(2)
node1.next.next = LinkedList(7)

node2 = LinkedList(1)
node2.next = LinkedList(3)

print_list(merge_lists(node1, node2))

运行后输出结果和你预期一致:

1 -> 1 -> 2 -> 3 -> 7 -> None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:30:04