单向链表
优质
小牛编辑
138浏览
2023-12-01
单向链表
结构体 | |
struct | rt_slist_node |
单向链表节点 更多... | |
宏定义 | |
#define | rt_slist_entry(node, type, member) rt_container_of(node, type, member) |
获取单向链表节点的数据结构 | |
#define | rt_slist_for_each(pos, head) for (pos = (head)->next; pos != RT_NULL; pos = pos->next) |
遍历单向链表 | |
#define | rt_slist_for_each_entry(pos, head, member) |
循环遍历单向链表head中每一个pos中的member成员 | |
#define | rt_slist_first_entry(ptr, type, member) rt_slist_entry((ptr)->next, type, member) |
获取链表中的第一个元素 | |
#define | rt_slist_tail_entry(ptr, type, member) rt_slist_entry(rt_slist_tail(ptr), type, member) |
获取链表中的最后一个元素 | |
类型定义 | |
typedef struct rt_slist_node | rt_slist_t |
单向链表节点类型定义 | |
函数 | |
rt_inline void | rt_slist_init (rt_slist_t *l) |
初始化一个单链表 | |
rt_inline void | rt_slist_append (rt_slist_t *l, rt_slist_t *n) |
在单向链表l的尾部追加一个节点 | |
rt_inline void | rt_slist_insert (rt_slist_t *l, rt_slist_t *n) |
向单向链表节点l后插入一一个节点n | |
rt_inline unsigned int | rt_slist_len (const rt_slist_t *l) |
获取单向链表的长度 | |
rt_inline rt_slist_t * | rt_slist_remove (rt_slist_t *l, rt_slist_t *n) |
从单向链表l中移除入一个节点n | |
rt_inline rt_slist_t * | rt_slist_first (rt_slist_t *l) |
获取单向链表的第一个节点 | |
rt_inline rt_slist_t * | rt_slist_next (rt_slist_t *n) |
获取单向链表节点n的下一个节点 | |
rt_inline int | rt_slist_isempty (rt_slist_t *l) |
判断单向链表是否为空 | |
详细描述
单向链表
宏定义说明
#define rt_slist_entry | ( | node, | |
type, | |||
member | |||
) | rt_container_of(node, type, member) |
获取单向链表节点的数据结构
- 参数
node 入口点 type 结构体类型 member 结构体中链表的成员名
#define rt_slist_for_each | ( | pos, | |
head | |||
) | for (pos = (head)->next; pos != RT_NULL; pos = pos->next) |
遍历单向链表
- 参数
pos 指向宿主结构的指针,在for循环中是一个迭代变量 head 链表头
#define rt_slist_for_each_entry | ( | pos, | |
head, | |||
member | |||
) |
循环遍历单向链表head中每一个pos中的member成员
- 参数
pos 指向宿主结构的指针,在for循环中是一个迭代变量 head 单链表的链表头 member 结构体中链表的成员名
#define rt_slist_first_entry | ( | ptr, | |
type, | |||
member | |||
) | rt_slist_entry((ptr)->next, type, member) |
获取链表中的第一个元素
- 参数
ptr 链表头 type 结构体类型 member 结构体中链表的成员名
- 注解
- 该链表不能为空。
#define rt_slist_tail_entry | ( | ptr, | |
type, | |||
member | |||
) | rt_slist_entry(rt_slist_tail(ptr), type, member) |
获取链表中的最后一个元素
- 参数
ptr 链表头 type 结构体类型 member 结构体中链表的成员名
- 注解
- 该单向链表不能为空
类型定义说明
typedef struct rt_slist_node rt_slist_t |
单向链表节点类型定义
单向链表类型定义
函数说明
rt_inline void rt_slist_init | ( | rt_slist_t * | l | ) |
初始化一个单链表
- 参数
l 将要被初始化的单向链表
rt_inline void rt_slist_append | ( | rt_slist_t * | l, |
rt_slist_t * | n | ||
) |
在单向链表l的尾部追加一个节点
- 参数
l 被操作的链表 n 将要被追加的节点
rt_inline void rt_slist_insert | ( | rt_slist_t * | l, |
rt_slist_t * | n | ||
) |
向单向链表节点l后插入一一个节点n
- 参数
l 被插入的链表节点 n 将要被插入的节点
rt_inline unsigned int rt_slist_len | ( | const rt_slist_t * | l | ) |
获取单向链表的长度
- 参数
l 单向链表的链表头
rt_inline rt_slist_t* rt_slist_remove | ( | rt_slist_t * | l, |
rt_slist_t * | n | ||
) |
从单向链表l中移除入一个节点n
- 参数
l 单向链表的链表头 n 将要被移除的节点
rt_inline rt_slist_t* rt_slist_first | ( | rt_slist_t * | l | ) |
获取单向链表的第一个节点
- 参数
l 单向链表的链表头
rt_inline rt_slist_t* rt_slist_next | ( | rt_slist_t * | n | ) |
获取单向链表节点n的下一个节点
- 参数
n 单向链表的节点
rt_inline int rt_slist_isempty | ( | rt_slist_t * | l | ) |
判断单向链表是否为空
- 参数
l 单向链表的链表头