链表的删除操作中,控制台无响应。
自己的代码
//????????????????????????????????????????????????为什么我十分不解,为什末显示无响应呢,我找不出来
void delete_list(struct cell* head,int i)//这个是struct cell* 好吗
{
struct cell *p ,*q;
p=head;
q=head->next;
/*if((q!=NULL)&&(q->x!=i))
{
p=q;
q=q->next;
}
// q=q->next;又错了傻子。
p->next=q->next;
free(q);*/
//考虑地不周全,不只是让你只删除一个元素就完事了,你又没用,递归
while((q->next)!=NULL)
{
if((q->x)!=i)
{
p=q;
q=q->next;
}
else
{
p->next=q->next;
free(q);
}
}
}
大佬的代码(太复杂了给我绕晕了!)
void del(struct num* head,int key)
{
struct num *p0=head,*p=NULL;
while(p0->number==key)//修改头指针
p0=p0->next;
p=head=p0;
//printf("%d\n",head->number);
while(p->number!=0)
{
p=p0->next;
while(p->number==key)
{
p0->next=p->next;
p=p0->next;
}
if(p->number==0)
break;
p0=p0->next;
}