尾插建立双链表
void createDlistR(DLnode *&L,int a[],int n)
{
DLNode *s,*r;
int i;
L=(DLNode*)malloc(sizeof(DLNode));
L->prior=NULL;
L->next=NUll;
r=L;
for(i=0;i<n;i++)
{
s=(DLNode*)malloc(sizeof(DLNode));
s->data=a[i];
r->next=s;
s->prior=r;
r=s;
}
r->next=NuLL;
}
查找结点
DLNode* findNode(DLNode *C,int x)
{
DLNode *p=C->next;
while(p!=NULL)
{
if(p->data==x)
break;
p=p->next;
}
return p;
}
插入结点
s->next=p->next;
s->prior=p;
p->next=s;
s->next->prior=s;//p若指向最后一个结点,本行可去
其特点:因为先将要插入的结点s的两边链接好了,这样可以保证不会链断了之后找不到结点。
删除
若要删除p的后继结点
q=p->next;
p->next=q->next;
q->next->prior=p;
free(p);