Python:如何完全删除链表?

标签 python linked-list

假设我对 Node

有这样的类定义
class Node:
    def __init__(self, data, next):
        self.data = data
        self.next = next

我还有 head 变量,它指向链表的开头。

设置head = None是否足以完全删除链表?我想 gc 应该做它的工作?

我将它与 c/c++ 进行比较,您仍然应该遍历整个列表并释放每个元素。

最佳答案

通常,您甚至不需要做任何事情。当 head 变量的生命周期结束时,如果您没有对该列表的任何其他引用,该列表将变得无法访问并自动符合收集条件。在 CPython 上,它通常会立即被收集,但您不应该依赖它。

如果您想在 head 变量的生命周期结束之前使列表符合收集条件,设置 head = None 会起作用,del head。 (请注意,del 的意思是“取消设置此变量”,而不是“删除此对象”。)

关于Python:如何完全删除链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081643/

相关文章:

python - 我要 rolling_apply 吗?

c - 如何在C编程中使用链表将堆栈链接到其他堆栈?

c - 在链表开头插入节点

c++ - 如何从未排序的链表中删除重复项

algorithm - 为什么在链表中查找循环时将指针增加 2,为什么不增加 3、4、5?

python - 3D 数组的快速插值

python - 从 Pandas 数据框中计算不同的单词

python - 无法使用 django 修改数据库

编写长导入语句的 Pythonic 方式

linked-list - 你能找出这个链表代码中的 4 个错误吗?