我正在尝试学习使用python3实现链表。当我调用append函数时,我的代码抛出错误"TypeError:Node((不带参数"。
class Node:
def _init_(self,data):
self.data=data
self.next=None
class LinkedList:
def _init_(self):
self.head=None
def print_list(self):
cur_node=self.head
while cur_node:
print(cur_node.data)
cur_node=cur_node.next
def append(self,data):
new_node=Node(data)
if self.head is None:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node=last_node.next
last_node.next=new_node
llist = LinkedList()
llist.append('A')
llist.append('B')
上述代码的错误是
TypeError Traceback (most recent call last)
<ipython-input-4-893f725212cd> in <module>
1 llist = LinkedList()
----> 2 llist.append('A')
3 llist.append('B')
<ipython-input-3-a7f4eb6e69c9> in append(self, data)
14
15 def append(self,data):
---> 16 new_node=Node(data)
17 if self.head is None:
18 self.head = new_node
TypeError: Node() takes no arguments
我的完整代码写在上面。代码出了什么问题?
应该是
def __init__(self,data):
init 两侧各有2个下划线
代码中的错误并不是说Node((不接受任何参数,而是试图解释Node((在初始化时不应该接受任何参数。
我对Node本身了解不多,但从错误来看,这就是我的结论。
这是由于在生成__init__
函数时出现了一个简单的语法错误。_init_
周围有一个下划线,而它应该是带有2个下划线的__init__
。