一、什么是双向链表
双向链表指的是在单链表的每个结点中,再设置一个指向其前驱结点的指针域。
所以在双向链表中有两个指针域,一个指向直接前驱,另一个指向直接后继。
(1)空双链表(带头结点)
(2)非空双链表(带头结点)
二、线性表的双向链表存储结构
//线性表的双向链表存储结构
typedef struct DulNode{
ElemType data;
struct DulNode *prior;//直接前驱指针
struct DulNode *next;//直接后继指针
}DulNode,*DuLinkList;
三、双向链表的特点
1.双向链表中,对于链表中的某一个结点p,它的后继的前驱是它自己。它的前驱的后继也是它自己。
用代码表示如下:
p->next->prior=p=p->prior->next;
2.双向链表基本操作
很多操作与单链表是相同的,这些操作使用一个指针就可以了。
3.插入操作
插入的时候,每一步的顺序比较重要。
4.删除操作