代码拉取完成,页面将自动刷新
/*
* list.c
*
* Created on: 2020年2月24日
* Author: wangbing
* Email : mz8023yt@163.com
*/
#ifdef __cplusplus
extern "C" {
#endif
#include "list.h"
#include "stddef.h"
/**
* @brief 初始化链表头
*/
void list_init(struct list_head* head)
{
head->next = head;
head->prev = head;
}
/**
* @brief 内部接口, 添加节点到链表中
*/
void __list_add(struct list_head* new_node, struct list_head* prev_node, struct list_head* next_node)
{
next_node->prev = new_node;
new_node->next = next_node;
new_node->prev = prev_node;
prev_node->next = new_node;
}
/**
* @brief 添加节点到链表头部
*/
void list_add(struct list_head* new_node, struct list_head* head)
{
__list_add(new_node, head, head->next);
}
/**
* @brief 添加节点到链表尾部
*/
void list_add_tail(struct list_head* new_node, struct list_head* head)
{
__list_add(new_node, head->prev, head);
}
/**
* @brief 添加节点到链表特定位置
*/
void list_insert(struct list_head* new_node, struct list_head* prev_node, struct list_head* next_node)
{
__list_add(new_node, prev_node, next_node);
}
/**
* @brief 内部接口, 删除链表中的节点
*/
void __list_del(struct list_head* prev_node, struct list_head* next_node)
{
next_node->prev = prev_node;
prev_node->next = next_node;
}
/**
* @brief 删除链表中的节点
*/
void list_del(struct list_head* node)
{
__list_del(node->prev, node->next);
node->next = NULL;
node->prev = NULL;
}
/**
* @brief 替换链表中的节点
*/
void list_replace(struct list_head* old_node, struct list_head* new_node)
{
new_node->next = old_node->next;
new_node->next->prev = new_node;
new_node->prev = old_node->prev;
new_node->prev->next = new_node;
}
/**
* @brief 判断链表是否为空
*/
int list_is_empty(const struct list_head* head)
{
struct list_head* next = head->next;
return (next == head) && (next == head->prev);
}
#ifdef __cplusplus
}
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。