结构之美:双向循环链表的结构与定义
2010-02-05 00:00
911 查看
双向链表
双(向)链表中有两条方向不同的链,即每个结点中除next域存放后继结点地址外,还增加一个指向其直接前趋的指针域prior。注意:
链表由头指针head惟一确定的。
带头结点的双链表的某些运算变得方便。
将头结点和尾结点链接起来,为双(向)循环链表。
双向链表的结点结构和形式描述
结点结构(见上图)形式描述如下:
typedef char ElemType; struct NodeType2 { ElemType data; NodeType2*next,*prior; }; NodeType2*p,*q,*s;
双向链表的前插和删除本结点操作
由于双链表的对称性,在双链表能能方便地完成各种插入、删除操作。1. 双链表的前插操作
{ s->next=p; s->prior=p->prior; p->prior->next=s; p->prior==s; }
2. 双链表上删除结点*p自身的操作
{ p->prior->next=p->next p->next->prior=p->prior; free(p); }
注意:
与单链表上的插入和删除操作不同的是,在双链表中插入和删除必须同时修改两个方向上的指针。
上述两个算法的时间复杂度均为O(1)。
延伸阅读
此文章所在专题列表如下:结构之美:定义一个线性表
结构之美:线性表的查找、插入与删除操作
结构之美:线性表的链式存储结构——链表
结构之美:单链表的初始化、创建与遍历
结构之美:单链表的头结点与头指针
结构之美:使用头插法创建单链表
结构之美:使用尾插法创建单链表
结构之美:单链表的销毁删除
结构之美:查找单链表指定位置结点的数据
结构之美:在单链表指定位置插入数据
结构之美:删除单链表指定位置的数据
结构之美:单链表逆序
结构之美:判断单链表中是否有环
结构之美:获取单链表倒数第N个结点值
单循环链表的初始化、创建、删除、查找与遍历
结构之美:双向循环链表的结构与定义
相关文章推荐
- 单生产者+单消费者模式下的双向循环链表之无锁结构
- 数据结构(三)---双向循环链表的实现---java版
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构(第二天) 双向循环链表
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构课程设计_双向循环链表
- 数据结构--双向循环链表实践
- 数据结构基础(12) --双向循环链表的设计与实现
- 数据结构之线性结构--双向循环链表
- 数据结构之静态链表和双向循环链表
- 数据结构——树——二叉查找树转换成排序的循环双向链表
- 数据结构基础(12) --双向循环链表的设计与实现
- linux 内核常用数据结构及算法——list(循环双向链表)
- 双向循环链表中结点类,链表类的定义与实现。
- c语言_数据结构_双向循环链表
- 数据结构(18)双向循环链表
- 数据结构之双向循环链表
- 实战数据结构(5)_双向循环链表的基本操作
- 数据结构--双向循环链表--插入和删除
- 数据结构之双向循环链表