# y_linklist **Repository Path**: northqd2018/y_linklist ## Basic Information - **Project Name**: y_linklist - **Description**: 一种用于嵌入式设备的链表 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-23 - **Last Updated**: 2024-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## y_linklist ### 1. y_linklist 介绍 一种用于嵌入式设备的链表,可以方便用于链式数据缓存与修改 ### 2. y_linklist 使用说明 y_linklist 目前包含两个源码文件 y_linklist.c 和 y_linklist.h 文件,使用时无需其他设置。 示例: ```c #include #include "y_linklist.h" #include "y_log.h" int main() { // 创建 10 个数据 int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // 打印版本号 y_linklist_print_version(); // 创建一个链表 LINKLIST_st *linklist = y_linklist_create(SINGLE_LINKLIST, true, 10); YLOG_CRLF(); // 头部插入 y_linklist_insert(linklist, 0, &a[0], sizeof(int)); // 尾部插入 y_linklist_insert(linklist, 1, &a[1], sizeof(int)); // 尾部添加 y_linklist_add(linklist, &a[2], sizeof(int)); y_linklist_add(linklist, &a[3], sizeof(int)); y_linklist_add(linklist, &a[4], sizeof(int)); y_linklist_add(linklist, &a[5], sizeof(int)); y_linklist_add(linklist, &a[6], sizeof(int)); y_linklist_add(linklist, &a[7], sizeof(int)); y_linklist_add(linklist, &a[8], sizeof(int)); y_linklist_add(linklist, &a[9], sizeof(int)); // 打印一次节点信息 for (int i = 0; i < 10; ++i) { int *tmp_int = y_linklist_find(linklist, i); YLOGI("index %d value is %d", i, *tmp_int); } // 判满 if (y_linklist_is_full(linklist)) { YLOGI("linklist is full"); } // 根据数据查找索引 YLOG_CRLF(); YLOGI("linklist find a[3] index is %d", y_linklist_find_index(linklist, &a[3], sizeof(int))); YLOG_CRLF(); // 删除尾部的一个节点 y_linklist_delete(linklist, 9); // 删除头部的一个节点 y_linklist_delete(linklist, 0); // 获取链表节点数量 YLOGI("node num %d", y_linklist_get_num(linklist)); // 打印一次节点信息 for (int i = 0; i < y_linklist_get_num(linklist); ++i) { int *tmp_int = y_linklist_find(linklist, i); YLOGI("index %d value is %d", i, *tmp_int); } // 删除所有节点 y_linklist_delete_all(linklist); // 判空 if (y_linklist_is_empty(linklist)) { YLOG_CRLF(); YLOGI("linklist is full"); YLOG_CRLF(); } // 销毁链表 y_linklist_destroy(linklist); return 0; } // 输出结果: [INFO ][0276][ y_linklist_print_version] ----- < y_linklist version : V0.1.0 > [DEBUG][0636][ y_linklist_create] ----- < linklist 000001bb03a51670 create succeed > [INFO ][0033][ main] ----- < index 0 value is 0 > [INFO ][0033][ main] ----- < index 1 value is 1 > [INFO ][0033][ main] ----- < index 2 value is 2 > [INFO ][0033][ main] ----- < index 3 value is 3 > [INFO ][0033][ main] ----- < index 4 value is 4 > [INFO ][0033][ main] ----- < index 5 value is 5 > [INFO ][0033][ main] ----- < index 6 value is 6 > [INFO ][0033][ main] ----- < index 7 value is 7 > [INFO ][0033][ main] ----- < index 8 value is 8 > [INFO ][0033][ main] ----- < index 9 value is 9 > [INFO ][0037][ main] ----- < linklist is full > [INFO ][0042][ main] ----- < linklist find a[3] index is 3 > [INFO ][0050][ main] ----- < node num 8 > [INFO ][0054][ main] ----- < index 0 value is 1 > [INFO ][0054][ main] ----- < index 1 value is 2 > [INFO ][0054][ main] ----- < index 2 value is 3 > [INFO ][0054][ main] ----- < index 3 value is 4 > [INFO ][0054][ main] ----- < index 4 value is 5 > [INFO ][0054][ main] ----- < index 5 value is 6 > [INFO ][0054][ main] ----- < index 6 value is 7 > [INFO ][0054][ main] ----- < index 7 value is 8 > [INFO ][0062][ main] ----- < linklist is full > [DEBUG][0598][ y_linklist_destroy] ----- < linklist 000001bb03a51670 destroy succeed > ``` ### 3. 依赖 y_linklist 目前依赖于以下代码库 1. [y_log](https://gitee.com/y-cz/y_log.git) :   依赖于 y_log 进行格式日志打印 2. [y_clangformat](https://gitee.com/y-cz/y_clangformat.git) :   依赖于 y_clangformat 保持代码格式统一 ### 4. 版本说明 #### V0.1.0 1. 实现 linklist 节点的创建,销毁,添加,删除,插入,查找,判空/判满,获取已用大小等功能。