环状数据结构中管理内存

import  weakref
class Node:
    def __init__(self,data):
        self.data = data
        self.left = None
        self.right = None

    def add_rignt(self,node):
        self.right = node
        # node.left = self
        node.left = weakref.ref(self)

    def __str__(self):
        return  "node:<%s>" % self.data

    def __del__(self):
        print("in __del__: delete %s" % self)

def create_Linklist(n):
    head = current = Node(1)
    for i in range(2, n + 1):
        node = Node(i)
        current.add_rignt(node)
        current = node
    return head

head = create_Linklist(1000)
head = None

import time
for _ in range(1000):
    time.sleep(1)
    print("run...")
input('wait...')

# 可以利用一半实一半虚保证双向链表的存在

# 解决方法:
# 1. 导入import weakref
# 2.修改 node.left = self 为 node.left = weakref.ref(self) 就可以了。


# class B:
#     def __del__(self):
#         print('del')
#
# import  weakref
# b = B()
# b2 = weakref.ref(b)    # b2是弱引用 删除b后,再删除b3就会触发del
# b3 = b2()
# del b
# del b3

执行结果:
在这里插入图片描述

发布了106 篇原创文章 · 获赞 0 · 访问量 2390

猜你喜欢

转载自blog.csdn.net/weixin_45905671/article/details/105260375