RT-Thread API参考手册  3.1.1
嵌入式实时操作系统
单向链表

单向链表 更多...

结构体

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_trt_slist_remove (rt_slist_t *l, rt_slist_t *n)
 从单向链表l中移除入一个节点n 更多...
 
rt_inline rt_slist_trt_slist_first (rt_slist_t *l)
 获取单向链表的第一个节点 更多...
 
rt_inline rt_slist_trt_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 
)
值:
for (pos = rt_slist_entry((head)->next, typeof(*pos), member); \
&pos->member != (RT_NULL); \
pos = rt_slist_entry(pos->member.next, typeof(*pos), 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单向链表的链表头