双向循环链表的插入和删除
数据结构
线性表--双向循环链表操作
**注意!!!**怎么说,今天(2024.4.24)找一个小小的运行bug(没有报错)找了非常之久,明天继续把这些代码补齐,啊啊啊,但是感谢还是把这个bug找出来(这段话我不会删的)~~
·插入
1)头插
/****************************************************************************
*
* function name : DoubleCirLList_HeadInsert
* function : 创建新的结点,并进行头插法
* parameter : None
*
* Return results : 返回成功或者失败。
* note : None
* author : tongyaqi1110@.com
* date : 2024-04-24
* version : V1.0
* revision history : None
* Copyright (c) 2023-2024 cececlmx@126.com All right Reserved
****************************************************************************/
bool DoubleCirLList_HeadInsert(DoubleCirLList_t *Head, DataType_t data)
{
// 1.创建新的结点,并对新结点进行初始化
DoubleCirLList_t *New = DoubleCirLList_NewNode(data);
if (NULL == New)
{
printf("can not insert new node\n");
return false;
}
// 2.判断链表是否为空,如果为空,则直接插入即可
if (Head == Head->next)
{
Head->next = New;
return true;
}
// 3.如果链表为非空,则把新结点插入到链表的头部
Head->next->prev->next = New;
New->prev = Head->next->prev;
New->next = Head->next;
Head->next->prev = New;
Head->next = New;
return true;
}
2)尾插
3)中间插
·删除
1)头删
2)尾删
3)中间删
热门相关:大文豪 凤惊天之狂妃难求 我的学姐会魔法 福慧双全 神医娘亲之腹黑小萌宝