1 初始化双链表
bool InitDLinkList(DLinklist &L){
L = (DNode *)malloc(sizeof(DNode)); //分配一个头结点
if(L == NULL) //内存不足,分配失败
return false;
L->prior = NULL; //头结点的prior永远指向NULL
L->next = NULL; //头结点之后暂时还没有结点
return true;
}
2 后插
bool InsertNextDNode(DNode *p, DNode *s){
if(p == NULL || s == NULL){ //非法参数
return false;
}
s->next = p->next;
if(p->next != NULL) //如果p结点有后继结点
p->next->prior = s;
s->prior = p;
p->next = s;
return ture;
}
3 后删
bool DeleteNextDNode(DNode *p){
if(p == NULL)
return false;
DNode *q = p->next; //找到p的后继结点
if(q == NULL) //p没有后继结点
return flase;
p->next = q->next;
if(q->next != NULL) //q结点不是最后一个结点
q->next->prior = p;
free(q); //释放结点空间
return ture;
}