脚踏实地《数据结构第二章》第五节:循环链表
一:定义
二:循环单链表
2.1 初始化代码
typedef struct LNode{//定义单链表结点类型ElemType data;//每个节点存放一个数据元素struct LNode *next;//指针指向下一个节点
}LNode, *LinkList;//初始化一个循环单链表
bool InitList(LinkList &L){L = (LNode *)malloc(sizeof(LNode));//分配一个头结点if(L==NULL)//内存不足,分配失败return false;L->next = L;//头结点next指向头结点return true;
}
2.2 判断循环单链表是否为空
//判断循环单链表是否为空
bool Empty(Linklist L){if(L->next==L)return true;elsereturn false;
}
2.3 判断结点p是否为循环单链表的表尾结点
//判断结点p是否为循环单链表的表尾结点
bool isTail(LinkList L, LNode *p){if(p->next==L)return true;elsereturn false;
}
2.4 其他
三:循环双链表
3.1 初始化代码
typedef struct LNode{//定义单链表结点类型ElemType data;//每个节点存放一个数据元素struct LNode *next;//指针指向下一个节点
}LNode, *LinkList;//初始化空的循环双链表
bool InitDLinkList(DLinklist &L){L = (DNode *)malloc(sizeof(DNode));//分配一个头结点if(L==NULL)//内存不足,分配失败return false;L->prior = L;//头结点的prior指向头结点L->next = L;//头结点的next指向头结点return true;
}
void testDLinkList(){//初始化循环双链表DLinklist L;InitDLinkList(L);// ...后续代码...
}
3.2 判断循环双链表是否为空
//判断循环双链表是否为空
bool Empty(Dlinklist L){if(L->next == L)return true;elsereturn false;
}
3.3 判断结点p是否为循环双链表的表尾结点
//判断结点p是否为循环双链表的表尾结点
bool isTail(DLinklist L, DNode *p){if(p->next == L)return true;elsereturn false;
}
3.4 双链表的插入
//在p结点之后插入s结点
bool InsertNextDNode(DNode *p, DNode *s){s->next = p->next;//将结点*s插入到结点*p之后p->next->prior = s;p->prior = p;p->next = s;
}
3. 5 双链表的删除
//删除p的后继结点q
p->next=q->next;
q->next->prior=p;
free(q);
```![在这里插入图片描述](https://img-blog.csdnimg.cn/2049dbcc3f6e4762800160ec4bb39e96.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP2FiYyE=,size_20,color_FFFFFF,t_70,g_se,x_16)
# 四:知识回顾与重要老点
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1af1c91213a4db3a95dc2074de0c9ae.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP2FiYyE=,size_20,color_FFFFFF,t_70,g_se,x_16)
脚踏实地《数据结构第二章》第五节:循环链表相关推荐
- 脚踏实地《数据结构第二章》第一节:线性表的定义和基本操作
考点分析 一:线性表的定义(数据结构三要素–逻辑结构) 定义:线性表是具有相同数据类型的n(n>0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表. 相同:每个数据元素所占空间一 ...
- 全栈工程师之路-中级篇之小程序开发-第二章第五节小程序中的Promise
上一节课最后,我们遇到了一个警告. 说我们太过频繁的调用serData了,因为我们这个页面的三部分数据是通过三个接口获取的. 所以我们分别在三个接口返回的时候调用了数据绑定. 但是过于频繁的调用set ...
- 数据结构-第二章(5)-链式存储结构
数据结构 ⚡️数据结构-第一章 ⚡️抽象数据类型案例 ⚡️数据结构-第二章(1)-线性结构 ⚡️数据结构-第二章(2)-线性表的顺序表示和实现 ⚡️数据结构-第二章(3)-顺序表(含代码) ⚡️数据结 ...
- 谈谈在计算机系统中引入操作系统,初中信息技术第一册第二章第1节《操作系统简介》教学设计...
广州市初中信息技术第一册第二章第1节<操作系统简介>教学设计 一.学习者分析 学生通过第一章的学习,对计算机的软.硬件知识有了初步的了解,同时对操作系统的作用也有了简单的认识.但由于学生普 ...
- 数据结构第二章学习总结
数据结构第二章学习总结 在数据结构第二章,我们学习了线性表的两种结构顺序和链式结构,学习了他们的定义,不同,存储结构和逻辑结构,还有一些基本的操作. 在学习过程中,我发现了许多问题:①书上的大多数代码 ...
- 传热学环肋肋效率matlab程序,传热学 第二章第四节 通过肋片的导热.pdf
传热学 第二章第四节 通过肋片的导热 第四节 通过肋片的导热 第二章 导热基本定律及稳态导热 传热 学 第一节 导热基本定律 (Heat Transfer ) 第二节 导热微分方程式 (Heat Tr ...
- 第二章 第四节:替换和切割
Python基础入门(全套保姆级教程) 第二章 第四节:替换和切割 strip() 去掉字符串左右两端的空白符(空格, \t, \n) s = " 你好, 我叫 周杰伦 " s1 ...
- (数据库系统概论|王珊)第二章关系数据库-第一节:关系数据结构及其形式化定义
文章目录 一:关系 (1)域 (2)笛卡尔积 (3)关系 A:基本概述 B:码相关概念 C:关系的三种类型 二:关系模式 三:关系数据库 (1)基本概念 (2)关系数据库的型与值 前面说过,数据模型由 ...
- 【重识云原生】第二章计算第一节——计算虚拟化技术总述
云平台计算领域知识地图: 楔子:计算虚拟化技术算是云计算技术的擎天之柱,其前两代技术的演进一直引领着云计算的发展,即便到了云原生时代,其作用依然举足轻重. 一.计算虚拟化技术总述 1.1 虚拟化技 ...
- C语言数据结构-第二章线性表-电大
第二章线性表--内容简介 本章将进入线性结构的学习. 线性结构是最简单.最常用的一种数据结构. 本章将学习线性表的定义.顺序和链式两种存储方式及相应存储结构上的运算实现.通过典型示例训练,掌握线性表的 ...
最新文章
- 互联网协议 — RIP 路由信息协议
- vs矩形框边框线显示被选中的区域;_如何使用OpenCV可视化的截取感兴趣区域
- mysql text 独立表,当您在MySQL或PostgreSQL中拥有TEXT字段时,是否应该将其放在单独的表中?...
- 自定义ViewGroup (2)支持滑动,并处理多指触摸可能产生的跳动问题
- java递推_【Java】递归递推的应用
- 【转】MySQL 复制的基本过程如下:
- 25.Yii2 自动加载
- 近3年专著类计算机参考文献,参考文献著作类
- kali linux启动盘工具,白话kali linux USB启动盘的制作(快捷版)
- 实用技巧 teamviewer高清显示
- property 理解
- 新闻接口调用之新浪滚动新闻
- 7-4 求奇数和 (15 分)
- 检验特殊字符java_java中文及特殊字符的校验方法
- 血与泪的教训: JavaWeb中文乱码问题整合
- 信息熵与压缩编码基础
- linux 文件系统被占用,解决umount的时候文件系统被占用的两个命令 fuser 和 lsof
- 2022年数维杯国际赛ABCD题思路
- hutool 读取扩展名文件_Python OpenCV视觉智能感知第一讲——读取摄像头或视频文件并播放显示...
- 质量管理之质量门禁的建设
热门文章
- oracle中sql的递归查询运用
- 基于android端计步器软件的尝试
- 【Minecraft开服教程】使用 MCSM 面板一键搭建我的世界服务器,并内网穿透公网远程联机
- Echarts 双柱状图+折线图合并---实现效果详解(vue+Echarts实现)
- Switch模拟器调研
- vscode代码自动保存插件_VSCode 云同步扩展设置 Settings Sync 插件
- 程序员办公桌都如此霸气,网友:砖头当杯垫也是不敢惹!
- 微信小程序开发需要的相关技术
- html中制作banner,css banner轮播图怎么做?
- 看我如何快速拿下整个C段主机权限