求教free(q);q=q->nextvoid 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已经被释放了,后面又能
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/21 04:32:12
![求教free(q);q=q->nextvoid 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已经被释放了,后面又能](/uploads/image/z/10134897-33-7.jpg?t=%E6%B1%82%E6%95%99free%28q%29%3Bq%3Dq-%3Enextvoid+delnodes%28Linklist+%26L%2CElemType+min%2CElemtype+max%29%7B+LinkList+%2Ap%3DL%2C%2Aq%3Dp-%3Enext%2C%2Ar%3Bwhile%28q%21%3Dnull%29%7Bif%28q-%3Edata%3E%3Dmin%26%26q-%3Edatanext%3Bp-%3Enext%3Dq-%3Enext%3Bfree%28q%29%3B+q%3Dr%3B%7Delse%7Bp%3Dq%3Bq%3Dq-%3Enext%3B%7D%7D%7D%E4%B8%BA%E4%BB%80%E4%B9%88free%28q%29%2Cq%E5%B7%B2%E7%BB%8F%E8%A2%AB%E9%87%8A%E6%94%BE%E4%BA%86%2C%E5%90%8E%E9%9D%A2%E5%8F%88%E8%83%BD)
求教free(q);q=q->nextvoid 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已经被释放了,后面又能
求教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呢?
求教free(q);q=q->nextvoid 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已经被释放了,后面又能
free释放的是q指针所指向的由malloc所分配的内存单元,q指针本身是不会释放的,所以之后可以将q指针重新指向新的内存地址,即指针r指向的位置;这里是因为外层有循环,所以需要将q指针移动到它的下一个元素,以便继续迭代执行.