您的位置:首页 > 理论基础 > 数据结构算法

数据结构---线性表----循环链表和双向链表

2016-03-23 15:34 99 查看
1.循环链表的定义     
       将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。(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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: