双向链表删除尾节点失败

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);
}

3个回答

if(p->next->data==x)
break;

这里跳出去了,你在这里进行删除操作

lulubuhaore
lulubuhaore 放进来进行操作也是一样出错
接近 4 年之前 回复
lulubuhaore
lulubuhaore 我这里break出去之后进行了删除操作啊,但是删不掉会出错
接近 4 年之前 回复

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; //删除节点
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问