stdlist.h#
stdlist.h是X2W-OS的标准链表实现
- 待办事项:
测试stdlist库
- Author
Shihong Wang (jack4shihong@gmail.com)
- Version
0.1
- Date
2023-04-12
- Copyright
Copyright Shihong Wang (c) 2023 with GNU Public License V3.0
Typedefs
-
typedef struct __list_elem_t list_elem_t#
list_elem_t是链表节点结构体Note
list_elem_t需要作为结构体的成员, 而后通过member2struct宏获得指向结构体的指针
- Bool() list_walking_func_t (list_elem_t *elem_ptr, int arg)
list_walking_func_t是自定义函数类型, 用于在链表遍历函数list_walking中作为回调函数- Param elem:
链表节点指针
- Param arg:
参数
Functions
-
void list_insert(list_elem_t *before_ptr, list_elem_t *add_ptr)#
list_insert用于在before_ptr指向的节点前插入add_ptr指向的节点Warning
在实现锁或者中断之后需要保护一下
- Parameters:
before_ptr – 指向链表中被插入的节点的指针
add_ptr – 指向要插入到链表中的节点的指针
-
void list_append(list_elem_t *elem_ptr, list_t *list_ptr)#
list_append用于将elem_ptr指向的节点添加到list_ptr指向的链表后面- Parameters:
elem_ptr – 指向要添加的节点的指针
list_ptr – 指向被添加的链表的指针
-
void list_remove(list_elem_t *elem_ptr)#
list_remove用于将elem_ptr指向的节点从在其所在的链表中删除- Parameters:
elem_ptr – 指向要删除的节点的指针
-
void list_push(list_elem_t *elem_ptr, list_t *list_ptr)#
list_push将链表视为一个栈, 用于向list_ptr指向的链表头前(栈顶)压入elem_ptr指向的节点- Parameters:
elem_ptr – 指向要被压入的节点的指针
list_ptr – 指向要被压入的链表的指针
-
list_elem_t *list_pop(list_t *list_ptr)#
list_pop将链表视为一个栈, 用于向list_ptr指向的链表头前(栈顶)弹出一个节点- Parameters:
list_ptr – 指向要被弹出的链表的指针
- Returns:
list_elem_t 指向被弹出的节点的指针
-
Bool list_empty(list_t *list_ptr)#
list_empty用于判断list_ptr指向的链表是否为空- Parameters:
list_ptr – 指向被判断的链表的指针
- Returns:
True 链表为空
- Returns:
False 链表不为空
-
size_t list_size(list_t *list_ptr)#
list_size用于计算list_ptr指向的链表的长度(元素个数)- Parameters:
list_ptr – 被计算长度的链表
- Returns:
size_t 链表的长度(元素个数)
-
Bool list_search(list_elem_t *elem_ptr, list_t *list_ptr)#
list_search用于在list_ptr指向的链表中查找是否存在elem_ptr指向的节点- Parameters:
elem_ptr – 指向被查找的节点的指针
list_ptr – 指向被查找的链表的指针
- Returns:
True
elem_ptr指向的节点在list_ptr指向的链表中- Returns:
False
elem_ptr指向的节点不在list_ptr指向的链表中
-
list_elem_t *list_walking(list_t *list_ptr, list_walking_func_t func, int arg)#
list_walking用于遍历list_ptr指向的链表, 并对每一个节点调用func判断是否继续遍历- Parameters:
list_ptr – 指向要遍历的链表的指针
func – 将应用在每一个节点上的函数
arg – 传给
func的参数
- Returns:
list_elem_t* 若将
func应用在当前节点后返回值为True, 则停止遍历, 且返回指向当前节点的指针, 否则继续遍历; 若将func应用于链表中所有元素后, 没有一个节点返回True, 则返回NULL
-
struct __list_elem_t#
- #include <stdlist.h>
list_elem_t是链表节点结构体Note
list_elem_t需要作为结构体的成员, 而后通过member2struct宏获得指向结构体的指针
-
struct __list_t#
- #include <stdlist.h>
list_t是链表结构体Public Members
-
list_elem_t head#
链表头结点, 仅标记用, 第一个节点是head->next
-
list_elem_t tail#
链表尾结点, 仅标记用, 最后一个节点是tail->prev
-
list_elem_t head#