每日记录(2.3双向链表)

发布时间 2023-06-05 23:43:21作者: 傲世小苦瓜

双向链表的基本概念

双链表顾名思义,就是链表由单向的链变成了双向链。 使用这种数据结构,我们可以不再拘束于单链表的单向创建于遍历等操作,大大减少了在使用中存在的问题。每一个节点都有两个指针分别指向该节点的前驱和后继。

定义:

struct DuLNode{
    EtypedeflemType   data; //数据域          
    struct DuLNode  *prior; //前驱 
    struct DuLNode  *next;  //后继
}DuLNode, *DuLinkList

 

1.双向链表的插入

 


由于每个节点都有前驱和后继,所以插入的时候p节点及其前驱的前驱和后继都要更新。所以需要按顺序写四条语句更新。(新增结点别忘了给数据域赋值)

s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;

 


2.双向链表的删除

 

删除一个结点,只需要把p结点的前驱的后继更新,p的后继的前驱更新,只需要两条语句即可。

p->prior->next=p->next;
p->next->prior=p->prior;

顺序表和链表的比较