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

本文介绍了循环链表和双向链表的概念。循环链表是单链表的延伸,通过将终端结点指向头结点形成环状结构,处理空链表和非空链表时更加统一。而双向链表的每个节点包含两个指针,分别指向前后节点,使得在链表中进行双向遍历成为可能。双向链表也可以实现循环结构,具有独特的性质,如某个节点的后继的前驱及前驱的后继皆为其自身。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值