假设我有Node
class Node:
def __init__(self, data, next):
self.data = data
self.next = next
我还有head
变量指向链表的开头。
将head = None
设置为完全删除链表是否足够?我想gc应该做它的工作?
我将它与c/c++
进行比较,您应该仍然遍历整个列表并释放每个元素。
答案 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