
高级数据结构
卖鱼的小白菜
这个作者很懒,什么都没留下…
展开
-
C语言泛型链表
不像 C++ 和 Java, C 语言不支持泛型。如何用C语言创建一条支持所有数据类型的链表? 在C语言里,我们可以使用 void 指针和函数指针来支持泛型功能。void 指针最牛逼的地方就在于它支持各种数据类型,当然所有数据类型的指针大小都是一样的,所以我们总是可以创建一个指针节点。函数指针需要处理存储在 void 指针里这内容。下面是一个用 C 语言实现的泛型链表。翻译 2018-04-11 10:10:24 · 946 阅读 · 0 评论 -
高效率(内存)的双向指针链表
问题: 如何只用一个指针节点实现双向链表? 英语能力有限,翻译起来不会很准确,因此在这里先做一下这篇文章的核心思想阐述: 使用一个指针,通过异或保存上一个节点的地址以及下一个节点的地址。 比如: 2^3 = 1; // 保存 1,就是本文中 ptrdiff 保存的值 2^3^2 = 3; // 异或 2 之后可以得到 3 假设现在有三个节点 prev, current, next c...翻译 2018-04-11 21:11:02 · 917 阅读 · 0 评论