代码拉取完成,页面将自动刷新
#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);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。