我需要在Python中创建一个链表。我研究了有关如何创建链表的解释:
https://stackabuse.com/python-linked-lists/
但是我有几个问题,为什么需要某些东西。
def add_list_item(self, item):
# add an item at the end of the list
if not isinstance(item, ListNode):
item = ListNode(item)
if self.head is None:
self.head = item
else:
self.tail.next = item
self.tail = item
return
问题是:
为什么我应该替换self.tail.next
的值,而逻辑上的思考方法是直接更改self.head.next
的值(尽管这不起作用)。
为什么更改self.tail.next
也会更改self.head.next
值?
为什么需要重置以下值才能使链表起作用?
self.tail = item
答案 0 :(得分:3)
由于您要将新项目添加到列表的END(由self.tail指向),因此新项目成为当前尾部(self.tail.next)之后的NEXT节点。由于self.tail是指向列表中LAST节点的指针,因此现在必须将其设置为指向新链接的项目,因此self.tail = item。