双链表的初始化
#includetypedef struct DNode{ int data; struct DNode *prior,*next; }DNode,*DLinklist; //初始化双链表 bool InitDLinkList(DLinklist &L){ L=(DNode*)malloc(sizeof(DNode)); //分配一个头结点 if(L==NULL){ return false; } L->prior=NULL; //头结点的prior永远为NULL L->next=NULL; return true; } //链表判空 bool Empty(DLinklist L){ if(L->next==NULL) return true; else return false; } void main(){ DLinklist L; InitDLinkList(L); }
双链表的插入
bool InsertNextDNode(DNode *p,DNode *s){
if(p==NULL||s==NULL){
return false;
}
s->next=p->next; //将结点*s插入到结点*p之后
if(p->next!=NULL)
p->next->prior=s;
s->prior=p;
p->next=s;
return true;
}
双链表结点的删除
//删除p结点的后继结点
bool InsertNextDNode(DNode *p){
if(p==NULL){
return false;
}
DNode *q=p->next; //找到p的后继结点
if(q==NULL){
return false; //p没有后继结点
}
p->next=q->next;
if(q->next!=NULL) //q结点不是最后一个结点
q->next->prior=p
free(q); //释放结点空间
return true;
}
销毁一个双链表
双链表的遍历



