nginx学习六 高级数据结构之双向链表ngx_queue_t

本文介绍了nginx中ngx_queue_t双向链表的使用,它是一个轻量级的容器,不负责数据存储,用户需自定义数据结构并包含ngx_queue_t。通过ngx_queue_t提供的函数,可以进行链表操作。文章详细讲解了ngx_queue_t结构、操作函数,以及如何从链表节点获取对应的数据结构实例。
摘要由CSDN通过智能技术生成

1 ngx_queue_t简介

ngx_queue_t是nginx提供的一个轻量级的双向链表容器,它不负责存储数据,既不提供数据的内存分配,它只有两个指针负责把数据链入链表,它跟stl提供的queue不同,stl提供的queue帮助用户存储数据,用户只需要相容器里添加数据即可,而ngx_queue_t,用户必须自己提供存储数据的内存,并且必须定义一种数据结构把ngx_queue_t包含在其中,然后利用ngx_queue_t提供的函数来进行相应的操作。

2 ngx_queue_t结构及其操作

2.1 ngx_queue_t

struct ngx_queue_s {
    ngx_queue_t  *prev;
    ngx_queue_t  *next;
};
ngx_queue_t只提供一个指向前驱和一个指向后继的指针,结构非常简单,这也是其能够通用性的原因。

2.2 操作函数

ngx_queue_init(q)            //初始化链表
ngx_queue_empty(h)           //判断链表是否为空                                                   
ngx_queue_insert_head(h, x)  //在头部插入一个元素                                       
ngx_queue_insert_after       //在h元素前面插入一个元素
ngx_queue_insert_tail(h, x)  //在h尾部插入一个元素 
ngx_queue_head(h)            //返回第一个元素
#define ngx_queue_last(h)    //返回最后一个元素 
ngx_queue_sentinel(h)        //返回链表容器结构体的指针
ngx_queue_next(q)            //返回下一个q的下一个元素  
ngx_queue_prev(q)            //返回q的前一个元素
ngx_queue_remove(x)          //删除x结点                         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值