删除节点出错,希望各位朋友解决……
/*下面编写一个删除结点函数*/struct link *del(struct link *head,int k)
{
struct link *p,*q,*t;
p=q=head; t=q;
while(p)
{
if(head->data==k){head=head->next;free(p);}/*当为头结点时的情况*/
p=q->next;
if(p->data==k){q->next=p->next;free(p);}
q=t;
t=t->next;
}
return (head);
}
该程序的编译通过,但并不得到理想的结果。
如果输入 1 2 2 2 3 2 2 选择删除2时,结果并不能把所有的2删除!