LIST链表文档
链表是一种非常实用的数据结构,广泛应用于编程领域。与数组相比,链表的一个最大优点就是动态性。链表的长度不是在创建时就固定的,我们可以在运行时随意地增加和删除元素。这使得链表在不确定数据规模的情况下特别有用。
初始化单链表
void slist_init(slist_t list);
向单链表尾部追加节点
void slist_append(slist_t list, slist_t node);
参数 |
描述 |
list |
单链表句柄 |
node |
要追加的节点 |
在单链表中节点后插入节点
void slist_insert_after(slist_t list, slist_t node);
参数 |
描述 |
list |
单链表句柄 |
node |
要插入的节点 |
从单链表中移除节点
void slist_remove(slist_t list, slist_t node);
参数 |
描述 |
list |
单链表句柄 |
node |
要移除的节点 |
获取单链表长度
size_t slist_get_length(slist_t list);
| 参数 | 描述 |
|:——-|:———|
| list | 单链表句柄 |
| 返回 | |
| size | 单链表长度 |
获取单链表尾节点
slist_t slist_get_tail(slist_t list);
参数 |
描述 |
list |
单链表句柄 |
返回 |
|
slist |
单链表尾节点 |
检查单链表是否为空
int slist_is_empty(slist_t list);
参数 |
描述 |
list |
单链表句柄 |
返回 |
|
bool |
单链表是否为空 |
初始化双链表
void list_init(list_t list);
在双链表后插入节点
void list_insert_after(list_t list, list_t node);
参数 |
描述 |
list |
双链表句柄 |
node |
要插入的节点 |
在双链表前插入节点
void list_insert_before(list_t list, list_t node);
参数 |
描述 |
list |
双链表句柄 |
node |
要插入的节点 |
从双链表中移除节点
void list_remove(list_t node);
| 参数 | 描述 |
|:——–|:———|
| node | 要移除的节点 |
获取双链表长度
size_t list_get_length(list_t list);
参数 |
描述 |
list |
双链表句柄 |
返回 |
|
size |
双链表长度 |
检查双链表是否为空
int list_is_empty(list_t list);
参数 |
描述 |
list |
双链表句柄 |
返回 |
|
bool |
双链表是否为空 |
通过子结构体指针获取结构体指针
#define slist_container_of(node, type, member)
((type *)((char *)(node) - (unsigned long)(&((type *)0)->member)))
参数 |
描述 |
node |
结构体中子结构体的指针 |
type |
结构体类型 |
member |
子结构体在结构体中的位置 |
返回 |
|
struct |
结构体指针 |
使用示例:
/* 示例结构体 */
struct example
{
int a;
struct list list;
};
int main(void)
{
struct example e1;
struct example *e2;
struct list *list = &e1.list;
/* 获取e1 */
e2 = mr_container_of(list, struct example, list);
}
———-
下载代码(路径:mr-library/ package / list)
———-
许可协议
遵循 Apache License 2.0 开源许可协议,可免费应用于商业产品,无需公开私有代码。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: Spring MVC中使用Swagger生成API文档和完整项目示例Demo,swagger-server-api
本文作者:小雷FansUnion-一个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主-排名第119 实际项目中非常需要写文档,提高Java服务端和Web前端以及移动端的对接效率。 听说Swagger这个工具,还不错,就网上找了些资料…