在阅读有关C数据结构的书时,我遇到了"内存高效的双重链接列表"这个术语.它只有一行说一个内存有效的双向链表使用比普通双链表更少的内存,但做同样的工作.没有更多的解释,也没有给出任何例子.只是有人认为这是从一本期刊中获取的,而在"Brackets"中则是"Sinha".
在Google上搜索后,我最接近的就是这个.但是,我什么都听不懂.
有人能解释一下C中的内存高效双链表是什么?它与正常的双向链接列表有什么不同?
编辑:好的,我犯了一个严重的错误.看到我上面发布的链接,是文章的第二页.我没有看到有第一页,并认为给出的链接是第一页.文章的第一页实际上给出了解释,但我不认为它是完美的.它只讨论了Memory-Efficient Linked List或XOR Linked List的基本概念.
c memory-efficient xor-linkedlist data-structures mem.-efficient-linkedlist
在Data Structures and Algorithms Made Easy中,struct内存高效的内存列表如下,
struct LinkNode
{
int data;
struct LinkNode* ptrdiff;
}
Run Code Online (Sandbox Code Playgroud)
在ptrdiff,将完成上一个和下一个节点的xoring.例如,前一个节点的地址为100,下一个节点的地址为500.
所以,在ptrdiff地址将是400.现在,如何通过了解其地址的xoring,如何移动到下一个或上一个节点(就像我们在双向链接列表中那样)?
我错过了这里的任何一步吗?
c algorithm xor-linkedlist data-structures mem.-efficient-linkedlist