2 Star 5 Fork 4

稀风 / KOS

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
list.c 5.69 KB
一键复制 编辑 原始数据 按行查看 历史
稀风 提交于 2023-01-28 10:58 . 代码优化
#include <list.h>
/******************************************************************************
* 函数名称: void ListInit(LIST* list)
* 功能说明: 链表初始化
* 输入参数: LIST* list --链表 
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListInit(LIST* list)
{
list->next = list;
list->prev = list;
}
/******************************************************************************
* 函数名称: static void _ListAddNode(LIST_NODE* node, LIST_NODE* prev, LIST_NODE* next)
* 功能说明: 在 prev 和 next 节点中间插入 node 节点
* 输入参数: LIST_NODE* node --节点
    LIST_NODE* prev --节点
    LIST_NODE* next --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
static void _ListAddNode(LIST_NODE* node, LIST_NODE* prev, LIST_NODE* next)
{
next->prev = node;
node->next = next;
prev->next = node;
node->prev = prev;
}
/******************************************************************************
* 函数名称: ListAddHead(LIST* list, LIST_NODE* node)
* 功能说明: 在链表头插入一个节点
* 输入参数: LIST* list --链表
    LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListAddHead(LIST* list, LIST_NODE* node)
{
_ListAddNode(node, list, list->next);
}
/******************************************************************************
* 函数名称: void ListAddTail(LIST* list, LIST_NODE* node)
* 功能说明: 在链表尾插入一个节点
* 输入参数: LIST* list --链表
    LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListAddTail(LIST* list, LIST_NODE* node)
{
_ListAddNode(node, list->prev, list);
}
/******************************************************************************
* 函数名称: void ListAddBefore(LIST_NODE* before, LIST* node)
* 功能说明: 在 before 节点前插入一个 node 节点
* 输入参数: LIST* before --链表
    LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListAddBefore(LIST_NODE* before, LIST_NODE* node)
{
_ListAddNode(node, before->prev, before);
}
/******************************************************************************
* 函数名称: void ListAddAfter(LIST_NODE* after, LIST_NODE* node)
* 功能说明: 在 after 节点后插入一个 node 节点
* 输入参数: LIST* after --链表
    LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListAddAfter(LIST_NODE* after, LIST_NODE* node)
{
_ListAddNode(node, after, after->next);
}
/******************************************************************************
* 函数名称: static void _ListDelNode(LIST_NODE* prev, LIST_NODE* next)
* 功能说明: 删除 prev 和 next 节点中间的节点
* 输入参数: LIST_NODE* prev --节点
    LIST_NODE* next --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
static void _ListDelNode(LIST_NODE* prev, LIST_NODE* next)
{
prev->next = next;
next->prev = prev;
}
/******************************************************************************
* 函数名称: void ListDelNode(LIST_NODE* node)
* 功能说明: 删除 node 节点
* 输入参数: LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListDelNode(LIST_NODE* node)
{
_ListDelNode(node->prev, node->next);
node->prev = NULL;
node->next = NULL;
}
/******************************************************************************
* 函数名称: void ListReplaceNode(LIST_NODE* old, LIST_NODE* new)
* 功能说明: 把 old 节点替换成 new 节点
* 输入参数: LIST_NODE* old --节点
    LIST_NODE* new --节点
* 输出参数: 无
* 函数返回: 无
* 其它说明: 无
******************************************************************************/
void ListReplaceNode(LIST_NODE* old, LIST_NODE* new)
{
new->next = old->next;
new->next->prev = new;
new->prev = old->prev;
new->prev->next = new;
old->prev = NULL;
old->next = NULL;
}
/******************************************************************************
* 函数名称: BOOL ListIsLast(LIST* list, LIST_NODE* node)
* 功能说明: 判断 node 节点是否是链表最后的节点
* 输入参数: LIST* list --链表
    LIST_NODE* node --节点
* 输出参数: 无
* 函数返回: 0:否; 1:是
* 其它说明: 无
******************************************************************************/
BOOL ListIsLast(LIST* list, LIST_NODE* node)
{
return (list == node->next);
}
/******************************************************************************
* 函数名称: BOOL ListIsEmpty(LIST* list)
* 功能说明: 判断链表是否为空
* 输入参数: LIST* list --链表
* 输出参数: 无
* 函数返回: 0:否; 1:是
* 其它说明: 无
******************************************************************************/
BOOL ListIsEmpty(LIST* list)
{
return (list->next == list->prev);
}
1
https://gitee.com/thin-wind/KOS.git
git@gitee.com:thin-wind/KOS.git
thin-wind
KOS
KOS
main

搜索帮助