数据结构---线性表----循环链表和双向链表
2016-03-23 15:34
99 查看
1.循环链表的定义
将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。(circular linked list)
为了使空链表与非空链表处理一致,我们通常会加一个头结点。并不是循环链表一定需要一个头结点。
其实循环链表和单链表的主要差异就在于循环条件的判断上,原来的判断条件是判断p->next是否为空,现在则是p->next不等于头结点。
2.双向链表的定义
双向链表(double linked List)是在在单链表的每个结点中,再设置一个指向其前驱结点的指针域。
所有的双向链表中的结点都有两个指针域,一个指向其直接后继,另一个指向直接前驱。
双向链表同样也可以是循环表。
双向链表的一个特点:
对于链表中的某个结点p,它的后继的前驱以及前驱的后继都是它自己,即:
将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。(circular linked list)
为了使空链表与非空链表处理一致,我们通常会加一个头结点。并不是循环链表一定需要一个头结点。
其实循环链表和单链表的主要差异就在于循环条件的判断上,原来的判断条件是判断p->next是否为空,现在则是p->next不等于头结点。
2.双向链表的定义
双向链表(double linked List)是在在单链表的每个结点中,再设置一个指向其前驱结点的指针域。
所有的双向链表中的结点都有两个指针域,一个指向其直接后继,另一个指向直接前驱。
/*线性表的双向链表存储结构*/ typedef struct DulNode { ElemType data; struct DuLNode *prior; /*直接前驱指针*/ struct DuLNode *next; /*直接后继指针*/ }DulNode, *DuLInkList;
双向链表同样也可以是循环表。
双向链表的一个特点:
对于链表中的某个结点p,它的后继的前驱以及前驱的后继都是它自己,即:
p->next->prior = p = p->prior->next;
相关文章推荐
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- Android 打造任意层级树形控件 考验你的数据结构和设计
- 数据结构之线段树
- 数据结构之堆Heap
- 数据结构与算法分析java——线性表
- 八皇后问题
- 2016年数据结构:单链表的使用
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表