
循环链表(循环单链表、循环双链表)的相关操作的代码实现(C语言)
发布日期:2021-05-04 14:30:54
浏览次数:43
分类:原创文章
本文共 1348 字,大约阅读时间需要 4 分钟。
一、循环链表
(一)循环单链表
- 单链表和循环单链表的区别:
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;}
//判断循环单链表是否为空bool Empty(LinkList L){ if(L -> next == L) return true; else return false;}
//判断结点p是否为循环单链表的表尾结点bool isTail(LinkList L, LNode *p){ if(p -> next == L) return true; else return false;}
(二)循环双链表
1. 循环双链表的初始化
- 初始化空的循环双链表
typedef struct DNode{ ElemType data; struct DNode *prior,*next;}DNode, *DLinklist;//初始化空的循环双链表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); ///..后续代码..}
- 判断循环双链表是否为空
bool Empty(DLInklist L){ if(L -> next == L)//👈是否指向链表自身 return true; else return false;}
2. 双链表的插入
//在p结点之后插入s结点bool InsertNextDNode(DNode *p, DNode *s){ s -> next = p -> next; //将结点*s插入到结点*pzhiho p -> next -> prior = s; //👈,在双链表中出现错误;但是在循环双链表中不会出现错误 s -> prior = p; p -> next = s;}
3. 双链表的删除
//删除p的后继结点qp -> next = q -> next;q -> next -> prior = p;//👈,在双链表中出现错误;但是在循环双链表中不会出现错误free(q);
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年03月30日 14时07分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue写自定义指令(全局或者组件内部)
2019-03-04
vue监听用户点击区域
2019-03-04
python functools模块方法
2019-03-04
python os库
2019-03-04
调度算法的一些评价指标
2019-03-04
配置环境变量的作用
2019-03-04
自学js第六天:JS数组和算法
2019-03-04
同步时序逻辑电路分析
2019-03-04
动态规划之有向图传递闭包的计算warshall算法图解详
2019-03-04
动态规划之背包问题
2019-03-04
ggplot2:数据分析与图形艺术第二版,11.4对模型可视化代码修改版
2019-03-04
R语言生成有标签的三维数组
2019-03-04
R语言做kaggle中California Housing Prices数据集
2019-03-04
观察者模式的理解以及在前端的广泛应用
2019-03-04
python,matplotlib中再添加一个y轴(在原来图上添加一个新的y轴)
2019-03-04
将图例放在最下面并且横向放置(ggplot2:数据分析与图形艺术6.4.4练习题第3题)
2019-03-04
联想拯救者突然连不上网怎么办
2019-03-04
vue中的一些高级特性(含vue3新特性)
2019-03-04
1361: [NOIP]数制转换
2019-03-04