1.双链表定义
//双链表定义
typedef struct DNode{
ElemType data; //数据域
struct DNode *prior, *next; //前驱和后继指针
}DNode, *DLinkList;
2.初始化双链表
//初始化双链表
bool InitDLinkList(DLinkList &L){
L = (DNode *)malloc(sizeof(DNode)); //创建头结点
if(L==NULL) return false; //内存不足,分配失败
L->prior = NULL; //头结点的prior永远指向NULL
L->next = NULL; //链表为空
return true;
}
3.双链表的插入(在p结点之后插入s结点)
//在p结点之后插入s结点
bool InsertNextNode(DNode *p, DNode *s){
if(p==NULL || s==NULL)
return false;
s->next = p->next; //将s结点插到p结点之后
if(p->next!=NULL) //如果p结点有后继结点
p->next->prior = s;
p->next = s;
s->prior = p;
return true;
}
4.双链表的删除(删除p的后继结点q)
//双链表的删除,删除p的后继结点q
bool DeleteNextNode(DNode *p){
if(p&#