提问人:Subhadip Guchhait 提问时间:10/22/2023 最后编辑:S.BSubhadip Guchhait 更新时间:10/22/2023 访问量:48
AttributeError:“LinkedList”对象没有属性“insert_head”
AttributeError: 'LinkedList' object has no attribute 'insert_head'
问:
我试图在一个链接列表中的头部插入元素 我不明白我的代码有什么问题。它说:
AttributeError: 'LinkedList' object has no attribute 'insert_head'
这是我的代码:
class LinkedList:
def _init_(self):
# Empty LinkedList
self.head = None
# no of nodes in the LinkedList
self.n = 0
class Node:
def __init__(self,value):
self.data = value
self.next = None
def _len_(self):
return self.n
def insert_head(self,value):
#new node
new_Node = Node(value)
#Create onnection
new_Node.next = self.head
#Reasign head
self.head = new_Node
#Increment n
self.n = self.n + 1
L = LinkedList()
L.insert_head(1)
len(L)
输出应为 5
答:
0赞
S.B
10/22/2023
#1
原因很明显,没有方法。它是在课堂上定义的。LinkedList
insert_head
Node
事实上,对象应该是数据的容器和对下一个节点的引用,仅此而已。例如,他们不应该知道链接列表的长度。Node
您可以将代码重构为如下所示:
from __future__ import annotations
class Node:
def __init__(self, value):
self.data = value
self.next: Node | None = None
class LinkedList:
def __init__(self):
self.head: Node | None = None
self.n: int = 0
def __len__(self):
return self.n
def insert_head(self, value):
new_Node = Node(value)
new_Node.next = self.head
self.head = new_Node
self.n += 1
l = LinkedList()
l.insert_head(20)
print(len(l)) # 1
评论
1
5
init
len