哈希链表节点中为什么用2级指针?
时间:2010-08-25
来源:互联网
为什么在定义哈希链表节点时:
struct hlist_node {
struct hlist_node *next, **pprev;
};
用 **pprev
这样不是很麻烦吗?
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世界里, 类型系统算个鸟。
如果没有明确的首尾边界, 类型系统也鸟用没有。
其实, 没什么必要。
list_head 同样可以构造出 :
1. 只需要1个指针保持头
2. 不保存尾
3. 元素可以双向遍历
hlist_node其实也可以双向遍历。
在list_head之后又搞出 hlist_head, hlist_node, 可能只是为了"在类型系统上说得过去"。
在将unsigned long当作指针的linux世界里, 类型系统算个鸟。
如果没有明确的首尾边界, 类型系统也鸟用没有。
作者: OwnWaterloo 发布时间: 2010-08-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28