Python:如何完全删除链接列表?

时间:2016-06-28 16:32:16

标签: python linked-list

假设我有Node

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

def deleteAll(self):
    temp = self.head
    if temp is None:
        print("\n Not possible to delete empty list")
    while temp:
        self.head = temp.get_next()
        temp = None
        temp = self.head