+ -
当前位置:首页 → 问答吧 → 哈希链表节点中为什么用2级指针?

哈希链表节点中为什么用2级指针?

时间:2010-08-25

来源:互联网

为什么在定义哈希链表节点时:
struct hlist_node {
        struct hlist_node *next, **pprev;
};

用 **pprev
这样不是很麻烦吗?

作者: pengjianbokobe   发布时间: 2010-08-25

up

作者: pengjianbokobe   发布时间: 2010-08-25

作者: lenky0401   发布时间: 2010-08-25

本帖最后由 OwnWaterloo 于 2010-08-25 20:01 编辑

其实, 没什么必要。

list_head 同样可以构造出 :
1. 只需要1个指针保持头
2. 不保存尾
3. 元素可以双向遍历

hlist_node其实也可以双向遍历。


在list_head之后又搞出 hlist_head, hlist_node, 可能只是为了"在类型系统上说得过去"。
在将unsigned long当作指针的linux世界里, 类型系统算个鸟。
如果没有明确的首尾边界, 类型系统也鸟用没有。

作者: OwnWaterloo   发布时间: 2010-08-25