IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 循环链表函数及双向链表 -> 正文阅读

[数据结构与算法]循环链表函数及双向链表

循环链表删除结点

CircleListNode* CircleList_Delete(CircleList* list,int pos)
{
   TCircleList* sList = (TCircleList*)list;
   int i=0;
   if(sList !=NULL)&&(pos>=0)&&(sList ->length >0))
   {
      CircleListNode* current =(CircleListNode*)sList;
      CircleListNode* last = NULL:
      for(int i=0;i<pos;i++)
      {
          current =current ->next;
       }
       //删除头结点
       if( current ==(CircleListNode*)sLIst)
       {
         last = (CircleListNode*)CircleList_Get(sList,sList->length - 1);
         }
         //求要删除的元素
         ret = current ->next;
         current->next =ret->next;
         sList->length--;
         //判断链表是否为空
         if(last !=NULL)
         {
           sList->header.next = ret->next;
           last->next = ret->next;
          }
          //若删除元素后,链表长度为0
          if(sList->Length == 0)
          {
             sList->header.next = NULL;
             sList->slider = NULL;
           }
     }
     return ret;
}
CircleListNode* CircleList_DeleteNode(CircleList* list,CircleListNode* node)
{
   TCircleList* sList = (TCircleList*)list;
   CircleListNode* ret = NULL;
   int i=0;
   if(sList != NULL)
   {
     CircleListNode* current = (CircleListNode*)sList;
//查找node在循环链表的位置
      for(int i=0;i<sList->lengh;i++)
      {
        if(current->next==node)
        {
           ret = current->next;
           break;
         }

         current = current->next;
       }
//找到ret,根据i去删除
       if(ret!=NULL)
       {
          CircleList_Delete(sList,i);
        }
     }
     return ret;
}



CircleListNode* CircleList_Next(CircleList* list)
{
  TCircleList* slist = (TCircleList*)list;
  CircleListNode* ret = NULL;
  if(sList != NULL)&&(sList->slider !=NULL))
  (  
     ret = sList ->slider;
     sList->slider = ret->next;
   }
   return ret;
}

双向链表

单链表数据元素无法直接访问其前驱元素
在单链表的结点中增加一个指向其前驱的pre指针
在这里插入图片描述
双向链表拥有单链表的所有操作
创建链表
销毁链表
获取链表长度
清空链表
获取第pos个元素操作
插入元素到位置pos
删除位置pos处的元素

一般实现

在这里插入图片描述

current->next = node;
node->next = next;
next->pre = node;
node->pre = current;

删除操作

在这里插入图片描述

current->next = next;
next->pre = current;
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:42:30  更:2021-09-23 11:43:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:21:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码