我不确定为什么这段代码有效我理解除了行 self._first = self._first 之外的所有内容。接下来为什么这行删除第一个元素
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 会删除列表的第一个元素。有人可以为我澄清一下吗?
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
你的链表好像是这样实现的:
List .first --> Item #1 .next ---> Item#2 .next --> Item#3
等等
代码将List
class的成员变量.first
重新赋值给Item#2
。因此,如果您从 .first
开始遍历列表,则 Item#1
不再“在列表中”。它还会减少 Item#1
的引用计数,这将在引用计数变为零时释放它。
我有一个工作程序可以删除链表的第一个元素。 我不确定为什么行 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
你的链表好像是这样实现的:
List .first --> Item #1 .next ---> Item#2 .next --> Item#3
等等
代码将List
class的成员变量.first
重新赋值给Item#2
。因此,如果您从 .first
开始遍历列表,则 Item#1
不再“在列表中”。它还会减少 Item#1
的引用计数,这将在引用计数变为零时释放它。