双向循环链表的插入和删除

数据结构

线性表--双向循环链表操作

**注意!!!**怎么说,今天(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)中间删



热门相关:大文豪   凤惊天之狂妃难求   我的学姐会魔法   福慧双全   神医娘亲之腹黑小萌宝