代码:
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”
您有一个缩进问题: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()
首先,您有两个函数(printlist
和insert_at_start
)应为方法的缩进问题,因此将它们缩进linkedlist
类中。另外还有两个错误:一个是,您需要致电
l1.insert_at_start(..)
即实例上的方法调用。另一个是逻辑错误,它位于以下行中:
if self.head == None:
new_node = self.head
当.head
还不存在时,您不认为.head
应该是分配给new_node
的那个吗?
还请注意,l1
可能是有史以来最令人困惑的变量名之一,请进行更改;和PascalCase您的班级名称。