【发布时间】:2021-06-22 05:11:15
【问题描述】:
我正在尝试练习实现 LinkedList,但由于某种原因,我无法完全理解“self.head”的概念。下面函数的第一个版本不起作用,只是将“self.head”存储在“n”中——但只在 else 子句之后? - 使其工作。这些功能不应该在功能上相同吗?
我认为“self.head”只是指您在遍历列表时所处的位置,所以说:“Self.head 是当前节点,所以 self.head.next 是下一个节点”和“n = self.head。N是当前节点,所以n.next是下一个节点”?
# Doesn't work:
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
while self.head.next is not None:
self.head = self.head.next
self.head.next = new_node
# Works:
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
n = self.head
while n.next is not None:
n = n.next
n.ref = new_node
【问题讨论】:
-
第一个函数改变了
head指向/引用的内容。而第二个将 head 的“引用”复制到n并移动n而不是head。所以简而言之,第一个函数使用head作为当前节点(移动的节点),而第二个函数使用n。
标签: python-3.x linked-list singly-linked-list