C语言,链表删除并释放内存问题

data*delet(data*head){intmax=10;intmin=2;data*p,*q,*s;if(head==NULL){printf("NO");exi... data* delet(data *head)
{
int max=10;
int min=2;
data *p, *q, *s;

if(head == NULL){
printf("NO");
exit (0);
}

p = head;

while(p != NULL){
if(p->n > max || p->n < min){
if(p == head)
head = p->next;
else
q->next = p->next;
s = p;
free(s);
p = p->next;
}
else{
q = p;
p = p->next;
}
}
return(head);
}请问我这个要怎么改?
展开
 我来答
elesteel
2011-03-19 · TA获得超过241个赞
知道答主
回答量:89
采纳率:100%
帮助的人:0
展开全部
free(s) 和 p = p->next要换一下位置。
先p = p->next; 再 free(s);

因为 s = p; free 了 s就是 free 了 p。就不应该再访问p->next了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式