【问题标题】:Im not sure why this code works I understand everything except for the line self._first = self._first.next why does this line remove the first element我不知道为什么这段代码有效我理解除了 self._first = self._first.next 这一行之外的所有内容 为什么这一行会删除第一个元素
【发布时间】:2022-01-17 08:24:44
【问题描述】:

我有一个工作程序可以删除链表的第一个元素。 我不确定为什么 self._first = self._first.next 行会删除列表的第一个元素。有人可以帮我澄清一下吗?

 def remove_first(self) -> Any:
       
        curr = self._first
        if curr is None:
            raise IndexError
        else:
            first = curr.item
            self._first = self._first.next
            return first

【问题讨论】:

  • 它将当前第一个元素的下一个元素分配为新的第一个元素。
  • 但这并不能解释为什么它会从链表中删除第一项,假设我有一个链表是 [1,2,3],它会将它变成 [2.3]跨度>
  • Harun 在评论中回答了您的问题,但您为什么要自己在 Python 中实现链表?标准库中有许多现成的高效数据结构,几乎可以处理链表有意义的任何场景。
  • 我自己实施它,因为我的学校需要它

标签: python list linked-list


【解决方案1】:

看起来你的链表是这样实现的:

List .first --> Item #1 .next ---> Item#2 .next --> Item#3

代码将List 类的.first 成员变量重新分配为指向Item#2。因此,如果您从.first 开始遍历列表,则Item#1 不再“在列表中”。它还减少了Item#1 的引用计数,当引用计数变为零时,它将释放它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2017-09-14
    • 2022-09-27
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多