双向链表(简单介绍)

本文详细介绍了双向循环链表的数据结构,每个节点包含前驱和后继指针。讨论了如何进行插入和删除操作,强调了操作顺序的重要性。在删除节点时,需先更新前后节点的指针,确保链表的连通性。

   就是在单链表的的每个结点中,再设置一个指针域,也就是每个结点都有两个指针域,一个指向它的前驱结点,一个指向它的后继结点。

typedef struct DuLNode {

    type data ;

    struct DuLNode *prior ; // 前驱指针

    struct DuLNode *next ; // 后继指针

}DuLNode , *DuLinkList;

双向链表也可以有循环链表。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pel5L2c5pyI5oGv,size_20,color_FFFFFF,t_70,g_se,x_16

     那么对于双向循环链表来说,每个结点p都有两种表示自己的方法,分别是

p->next->prior (p后继的前驱)

p->prior->next (p前驱的后继)

双向链表的插入与删除:

要把结点s插入到ai和ai+1之间

令p指向ai,则p->next就指向ai+1

1. s->prior=p 让s的前驱指针指向ai

2. s->next=p->next 让s的后继指针指向ai+1

3. p->next->prior=s 让ai+1的前驱指针指向s

4. p->next=s 让ai的后继指针指向s

注意顺序 先搞定s的前驱后继,再搞定ai+1的前驱和ai的后继(记忆:前驱后继,前驱后继)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pel5L2c5pyI5oGv,size_20,color_FFFFFF,t_70,g_se,x_16

      在ai-1、ai、ai+1的连续的双向链表中删除ai,令p指向ai。

1. p->prior->next=p->next

让ai-1的后继指针指向ai+1

 

2. p->next->prior=p->prior

 

 让ai+1的前驱指针指向ai-1

记忆:先后继再前驱

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pel5L2c5pyI5oGv,size_20,color_FFFFFF,t_70,g_se,x_16 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值