大家看我这个删除链表节点的函数哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/28 17:14:52
link del(link head,char *s)
{ link p1,p2;
p1=head;
if(head==NULL) exit(0);
while((strcmp(s,p1->xh)!=0)&&p1->next!=NULL);
{
p2=p1;p1=p1->next;
}
if(!strcmp(s,p1->xh))
{
if(p1==head) head=p1->next;
else
p2->next=p1->next;
n--;
}
else printf("%s is not been found",s);
return head;
}
如何解决啊。我创建了一个链表。然后向删除一个节点,调用它输入节点里的标识符以后却不会返回到主函数中

删除操作没错
如果是动态链表的话,被删除的节点没有被释放

比如 在只有一个节点的情况下,head = 节点1
删除第一个节点会执行
head= p1->next;
此时 head=NULL
但是节点1内存没有释放,会造成内存泄露

输入参里的字串S与p1->xh,这个xh哉是做么事的?
设计链表,建立,删除,插入,最好功能单一,外围操作不要放在里面去做