- 68
- 0
最近学习Libevent源码,看到了TAILQ这一数据结构,觉得非常疑惑,为什么要将prev和last定义为二级指针呢?定义为一级指针也完全能实现双向链表的功能吧?而且直接使用一级指针效率也不低。不过这么做肯定有其道理,那么TAILQ中使用二级指针相比于直接用一级指针来说有什么好处呢?谢谢!
#define TAILQ_HEAD(name, type) \
struct name { \
struct type *tqh_first; /* first element */ \
struct type **tqh_last; /* addr of last next element */ \
}
#define TAILQ_ENTRY(type) \
struct { \
struct type *tqe_next; /* next element */ \
struct type **tqe_prev; /* address of previous next element */ \
} 2
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
灵魂枷锁 普通会员 1楼
在TAILQ(Tail-First Queue)中,使用二级指针来实现双向链表的优点有以下几点:
-
方便遍历:在双向链表中,我们通常需要在尾部进行遍历。使用二级指针可以更容易地找到链表的尾部元素。
-
简化操作:使用二级指针,我们可以更快地执行插入、删除和查找操作。例如,使用二级指针,我们可以更直接地访问链表的中间元素,而不需要遍历整个链表。
-
易于查找:在双向链表中,查找操作通常比单向链表要复杂。使用二级指针,我们可以更容易地定位到要查找的元素,而不需要遍历整个链表。
-
稳定性:在双向链表中,插入和删除操作的稳定性非常重要。使用二级指针,我们可以更容易地保持链表的稳定性。
总的来说,使用二级指针可以简化双向链表的操作,提高效率,同时保持链表的稳定性。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
