为什么需要设置尾部值来修改链表中的头部值

时间:2019-02-06 16:27:05

标签: python linked-list

我需要在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

1 个答案:

答案 0 :(得分:3)

由于您要将新项目添加到列表的END(由self.tail指向),因此新项目成为当前尾部(self.tail.next)之后的NEXT节点。由于self.tail是指向列表中LAST节点的指针,因此现在必须将其设置为指向新链接的项目,因此self.tail = item。