求教free(q);q=q->next
void delnodes(Linklist &L,ElemType min,Elemtype max)
{
LinkList *p=L,*q=p->next,*r;
while(q!=null)
{
if(q->data>=min&&q->datanext;
p->next=q->next;
free(q);
q=r;
}else
{
p=q;q=q->next;
}
}
}
为什么free(q),q已经被释放了,后面又能把r赋给q呢?
人气:466 ℃ 时间:2020-03-27 16:35:52
解答
free释放的是q指针所指向的由malloc所分配的内存单元,q指针本身是不会释放的,所以之后可以将q指针重新指向新的内存地址,即指针r指向的位置;这里是因为外层有循环,所以需要将q指针移动到它的下一个元素,以便继续迭代执行.
推荐
猜你喜欢
- 表示"想"的四字成语
- 销售给红星工厂甲产品100件,每件售价300元,计30000元,增值税销售项税额5100元,款项己收银行存款户
- 火星—地球之间有什么关系?
- 某工厂去年实际产值2400万元,比计划增长3/5,计划产值多少万元?
- 鸡的脚比兔的脚少24只,鸡有多少只,兔有多少只?
- 为你的幸福,我会不惜一切代价英文怎么说?
- 关于正方形剪成三角形的问题
- 某市中学生举行足球赛,共赛17轮,计分方法是胜一场得3分,平一场得1分,负一场得0分,在这次足球赛中,若