我遇到了缺少的位置参数错误。(python中的链接列表)

问题描述 投票:-1回答:2

代码:

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

class linkedlist:
    def __init__(self):
        self.head=None

def printlist(self):
    temp=self.head
    while(temp):
        print(temp.data,end=" ")
        temp=temp.next

def insert_at_start(self,new_data):
    new_node=node(new_data)
    if self.head==None:
        new_node=self.head
    else:
        new_node.next=self.head
        self.head=new_node

l1=linkedlist()
insert_at_start(1)
insert_at_start(5)
insert_at_start(1)
insert_at_start(7)
insert_at_start(5)

l1.printlist()

错误:追溯(最近一次通话):在第65行的文件“ linkedlist.py”中insert_at_start(1)TypeError:insert_at_start()缺少1个必需的位置参数:“ new_data”

python data-structures singly-linked-list
2个回答
0
投票

您有一个缩进问题:insert_at_start不是linkedlist类的方法,因为它是在类范围之外定义的,因此这需要2个参数。

尝试以下方法:

class linkedlist:
    def __init__(self):
        self.head=None

    def printlist(self):
        temp=self.head
        while(temp):
            print(temp.data,end=" ")
            temp=temp.next

    def insert_at_start(self,new_data):
        new_node=node(new_data)
        if self.head==None:
            new_node=self.head
        else:
            new_node.next=self.head
            self.head=new_node

l1=linkedlist()
l1.insert_at_start(1)
l1.insert_at_start(5)
l1.insert_at_start(1)
l1.insert_at_start(7)
l1.insert_at_start(5)
l1.printlist()

0
投票

首先,您有两个函数(printlistinsert_at_start)应为方法的缩进问题,因此将它们缩进linkedlist类中。另外还有两个错误:一个是,您需要致电

l1.insert_at_start(..)

即实例上的方法调用。另一个是逻辑错误,它位于以下行中:

if self.head == None:
    new_node = self.head

.head还不存在时,您不认为.head应该是分配给new_node的那个吗?

还请注意,l1可能是有史以来最令人困惑的变量名之一,请进行更改;和PascalCase您的班级名称。

© www.soinside.com 2019 - 2024. All rights reserved.