鉴于python对象只是对实际内存对象的引用 对象的内存地址无法恢复。
是否可以在Python中实现XOR链表?如果是的话怎么样?
答案 0 :(得分:2)
你不能在Python中构建一个XOR链表,因为Python不会让你搞乱指针中的位。
你无论如何都不想实现它 - 这是一个肮脏的技巧,使你的代码难以理解而没什么好处。
如果您担心内存,那么使用每个节点有超过1个元素的双向链表几乎总是更好,就像链接的数组列表一样。
例如,虽然XOR链接列表每个项目需要1个指针,加上项目本身,但每个节点有16个项目的双向链接列表每16个项目需要3个指针,或者每个项目需要3/16个指针。 (额外的指针是记录节点中有多少项的整数的成本)小于1.在Python中有额外的开销,但它仍然有效。
除了节省内存之外,您还可以在本地获得优势,因为节点中的所有16个项目在内存中彼此相邻。迭代列表的算法会更快。
请注意,每次添加或删除节点时,XOR链接列表还要求您分配或释放内存,这是一项昂贵的操作。使用阵列链接列表,您可以通过允许节点小于完全填充来做得更好。例如,如果您允许5个空项目插槽,则每次第3次插入时只分配或释放内存,或者最差时删除。