双向循环链表
·本篇:530字 大约需要: 2分钟
前言
双向循环链表的实现及合并
编程语言:C
双向循环链表
双向循环链表的定义
- 在循环链表每个结点中,再设置一个指向其前驱结点的指针域
- 双向循环链表解决了单链表查找上一结点最坏时间复杂度为O(n)的缺点
基本操作实现
- 结构代码
1 |
|
- 初始化头结点
1 | void InitHead(Node *p) |
- 在双向循环链表中的结点都有两个指针域,一个指向直接后继,另一个指向直接前驱
- 随机初始化一个双向循环链表,表头的数据域存储表长信息
1 | void RandDuLinkList(Node *p) |
- 合并两个双向循环链表
1 | void DDuLinkMerge(Node *L1, Node *L2) |
- 合并两个有序(升序)双向循环链表
1 | void DDuOrderLinkMerge(Node *L1, Node *L2) |
总结
- 其它操作实现并不复杂,双向循环链表只是比单链表多了一个前驱指针