QTAILQ队列数据结构
QTAILQ队列数据结构
这种数据结构由两种基本结构构成,分别是QTAILQ_ENTRY和QTAILQ_HEAD,前者表示队列的元素,后者表示队列的头。
entry为一个联合体类型,包含tqe_next和tqe_circ,前者适用于单向链表,后者适用于双向链表。
在构造单向链表时,tqe_next指向链表中的下一个元素。
在构造双向链表时,tqe_circ->tql_next指向链表中的下一个元素,tqe_circ->tql_prev指向链表中上一个元素的tqe_circ。
head与entry结构类似,包含tqh_first和tqh_circ,前者适用于单向链表,后者适用于双向链表。
在构造单向链表时,tqh_first指向链表中的第一个元素。
在构造双向链表时,tqh_circ指向链表中的第一个元素的tqh_circ。
基于这些数据结构,有一些操作。
QTAILQ_INSERT_TAIL(head,elm,field)
将新元素elm放入整个链表的最后一个。
最后一个元素的下一个元素肯定为NULL,所以(elm)->field.tqe_next = NULL;
最后一个元素的tqe_circ.tql_prev应该指向之前是最后一个元素的元素,即指向(head)->tqh_circ.tql_prev.
之前是最后一个元素的元素,即(head)->tqh_circ.tql_prev,的下一个元素,应该为elm,所以之前的最后一个元素->tql_next = (elm).
head的prev应该是elm,因此(head)->tqh_circ.tql_prev = &(elm)->field.tqe_circ.
QTAILQ_INSERT_AFTER(head, listelm, elm, field)
向队列中的某元素后插入一个新的元素
QTAILQ_INSERT_BEFORE(listelm,elm,field)
向队列中的某元素前插入一个新的元素
__EOF__

本文链接:https://www.cnblogs.com/haiyonghao/p/14440753.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了