如何在Python中实现XOR链接列表?

时间:2017-09-25 09:09:19

标签: python python-3.x data-structures linked-list xor

鉴于python对象只是对实际内存对象的引用 对象的内存地址无法恢复。

是否可以在Python中实现XOR链表?如果是的话怎么样?

1 个答案:

答案 0 :(得分:2)

你不能在Python中构建一个XOR链表,因为Python不会让你搞乱指针中的位。

你无论如何都不想实现它 - 这是一个肮脏的技巧,使你的代码难以理解而没什么好处。

如果您担心内存,那么使用每个节点有超过1个元素的双向链表几乎总是更好,就像链接的数组列表一样。

例如,虽然XOR链接列表每个项目需要1个指针,加上项目本身,但每个节点有16个项目的双向链接列表每16个项目需要3个指针,或者每个项目需要3/16个指针。 (额外的指针是记录节点中有多少项的整数的成本)小于1.在Python中有额外的开销,但它仍然有效。

除了节省内存之外,您还可以在本地获得优势,因为节点中的所有16个项目在内存中彼此相邻。迭代列表的算法会更快。

请注意,每次添加或删除节点时,XOR链接列表还要求您分配或释放内存,这是一项昂贵的操作。使用阵列链接列表,您可以通过允许节点小于完全填充来做得更好。例如,如果您允许5个空项目插槽,则每次第3次插入时只分配或释放内存,或者最差时删除。