void Delete(DLNode *C,int x)
{
DLNode *p=C,*q;
while(p->next->data!=x&&p->next!=NULL)
{
if(p->next->data==x)
break;
p=p->next;
}
if(p->next==NULL)
{
return;
}
q=p->next;
p->next=q->next;
q->next->prior=p;
free(q);
}
if(p->next->data==x)
break;
这里跳出去了,你在这里进行删除操作
while(p->next->data!=x&&p->next!=NULL)
->
while(p->next!=NULL)
while(p->next->data!=x&&p->next!=NULL)
{
if(p->next->data==x)
break;
p=p->next;
}
改为:
while(p->next->data!=x&&p->next->next!=NULL)
{
p=p->next;
}
if(p->next->data==x)
{
//p->next空间的相关操作
p->next=p->next->next; //删除节点
}