数据结构算法代码实现——循环链表、双向链表(五)
来源:互联网 发布:软件怎么root 编辑:程序博客网 时间:2024/06/08 01:52
循环链表
循环链表是一种特殊的链表,其特点是,表中最后一个结点的指针域指向头结点,整个链表的首位结点相连形成一个环。 因此,从循环链表中的任何结点出发都可以找到其他结点 循环链表的操作运算和单链表的我操作基本相同,两者最大的差别在于:遍历链表时的终止条件不同。 在链表中,用指针域是否为空判断表尾的条件;而在循环链表中,则用指针域是否指向表头结点作为条件。
循环链表设置尾指针
有些时候,我们操作链表大多是在表头、表尾操作。若用头指针查找首结点a1的时间复杂度是O(1),而查找表尾an则时间复杂度为o(n)。 循环链表既然可以形成一个环,所以我们可以设置尾指针而不设置头指针的循环链表,这样无论查找首元结点还是尾结点时间复杂度都是O(1)。
双向链表
由于单链表的每个结点只有一个指示其直接后继的指针域,返回前驱结点很难,为了克服这种缺点,可以采用双向链表的存储结构。
双向链表的存储结构
线性表的双向链表存储结构
typedef struct DuLNode{ ElemType data; struct DuLNode *prior,*next; }DuLNode,*DuLinkList;
双向循环链表的基本操作
12个基本操作:
1,测试代码可以参考单链表的代码,只需修改成员变量即可。
2,测试结果图:
3,总结:
双向循环链表的插入和删除操作: 插入操作的自然语言描述: 1)令s的前驱指针指向p结点; 2)令s的后继指针指向q结点的直接后继 3)令p结点直接后继的前驱指针指向s 4)令p结点的直接后继指针指向p 删除操作的自然语言描述: 1)令p结点的前驱结点的后继指针指向p的后继结点 2)令p的后继结点的求前驱指针指向p的前驱结点 3)释放结点p
0 0
- 数据结构算法代码实现——循环链表、双向链表(五)
- 数据结构 P35 算法实现 双向循环链表的创建
- 数据结构之——循环双向链表的实现
- 【数据结构】双向循环链表实现
- 数据结构通用双向循环链表实现
- 数据结构--双向循环链表C实现
- 【数据结构】双向循环链表实现
- 数据结构-----双向循环链表
- 数据结构 -- 双向循环链表
- 数据结构--循环双向链表
- 数据结构(双向循环链表)
- 数据结构-双向循环链表
- 数据结构-双向循环链表
- 数据结构五双向链表
- 数据结构算法——双向链表
- linux 内核常用数据结构及算法——list(循环双向链表)
- 数据结构与算法——线性表链式存储(双向循环链表)
- 头疼的算法与数据结构——双向循环链表
- ROS机器人学习摇杆篇——1
- matlab 学习笔记
- 空结构体和空类
- 技术管理者应具备哪些能力?
- CRichEditCtrlEx支持静态表情聊天类的使用
- 数据结构算法代码实现——循环链表、双向链表(五)
- 从子类中筛选出不符合基类的项
- oracle 体系结构详解
- 集群监控指标(一)
- EXTjs 提交的方式
- 04-树7. Search in a Binary Search Tree (25)
- 介绍几个在线画流程图的工具
- VC 仿QQ窗口靠边自动收缩隐藏效果
- 设计模式C++实现-解释器模式