双向链表的基本概念
双链表顾名思义,就是链表由单向的链变成了双向链。 使用这种数据结构,我们可以不再拘束于单链表的单向创建于遍历等操作,大大减少了在使用中存在的问题。每一个节点都有两个指针分别指向该节点的前驱和后继。
定义:
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;
顺序表和链表的比较