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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 循环链表 -> 正文阅读

[数据结构与算法]循环链表

基本概念

循环链表的定义:将单链表的最后一个数据元素的next指针指向第一个元素
在这里插入图片描述
循环链表拥有单链表的所有操作
创建链表
销毁链表
获取链表长度
清空链表
获取第pos个元素操作
插入元素到位置pos
删除位置pos处的元素

新增功能

游标
即在循环链表中可以定义一个“当前”指针,这个指针通常称为游标,可以通过这个游标遍历链表中所有的元素
在这里插入图片描述

游标重置

CircleListNode* CircleList_Reset(CircleList* list);

获取当前游标指向的数据元素

CircleListNode* CircleList_Current(CircleList* list);

游标移动指向下一个数据元素

CircleListNode* CircleList_Next(CircleList* list);

指定删除链表的某个数据元素

CircleListNode* CircleLIst_DeleteNode(CircleList* list,CircleListNode* node);

特点

循环链表可以完全取代单链表的使用
循环链表的Next和Current操作可以高效的遍历链表中所有元素

提高了代码复杂度

循环链表插入结点

调用自定义函数

void insert_node (list_t *insert_node,list_t*prev_node,list_t* next_node)
{
  insert_node->next = next_node;
  insert_node->prev = prev_node;
  next_node->prev = insert_node;
  prev_node->next = insert_noed;
}

头插法

void insert_head(list_t*head,list_t* insert)
{
    insert_node(insert,head,head->next);
}

尾插

void insert_tail(list_t* head,list_t*insert)
{
    insert_node(insert,head->prev,head);
}

循环链表删除结点

void Delete(list **pNode,int place)
{
   list *temp,*target;
   int i;
   temp=*pNode;
   if(temp==NULL)
   {
      return ;
   }
   if(place==1)  //删除头结点
   {             //找到尾结点,使尾结点的next指向头结点的下一个结点
                 //rear->next =(*head)->next;使新结点作为头结点,释放原来的头结点
          for(target=*pNode;target->next!=*pNode;target=target->next);
          temp=*pNode;
          *pNode=(*pNoe)->next;
          target->next=*pNode;
          delete temp;
    }
    else//删除普通结点
    {
       temp=target->next;    //删除普通结点,找到删除结点的前一个结点target,使target指向删除节点下一个结点 转存删除结点地址
       target->next=temp->next;
       delete temp;
     }
}
   
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:55:44  更:2021-09-22 14:56:30 
 
开发: 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 12:55:30-

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