初始化双链表
bool InitDLinkList(DLinklist &L){
L=(DNode *)malloc(sizeof(DNode));
if(L==NULL)
return false;
L->prior=NULL;
L->next=NULL:
return true;
}
void testDLinkLIst(){
DLinklist L;
InitDLinkLIst(L);
}
typedef struct DNode{
ElemType data;
struct DNode *prior,*next;
};DNode,*DLinklist
//DLinklist等价于DNode * 两者的不同是在于看此处是想强调什么,
//想强调是个双链表就用DLinklist
//想强调是个头结点就用DNode *
//判断双链表是否为空(带头节点)
bool Empty(DLinklist L){
if(L->next==NULL)
return true;
else
return false;
}
//双链表的插入(后插)
bool InsertNextDNode(DNode *p, DNode *s){
if(p==NULL || s==NULL)
return false;
s->next=p->next;
if(p->next!=NULL)
p->next->prior=s;
s->prior=p;
p->next=s;
return true;
}
//双链表的删除
bool DeleteNextDNode(DNode *p){
if(p==NULL)
return false;
DNode *q=p->next;
if(q==NULL)
return false;
p->next=q->next;
if(q->next!=NULL)
q->next->prior=p;
free(q);
return true;
}