删除链表结点和树的结点的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 22:43:06
我建立一个链表,要删除头结点,代码为:
p=head->next;
if(p){
q=p;
p=p->next;
free(q);
}
但在遍历时却出现内存错误,而在二叉排序树中删除一个结点时,如树中只有左或者右子树的时候执行这样的代码却能达到删除的效果,这是为什么,请详细解释一下,我主要的问题在哪里?

p=head->next;
if(p){
q=p;
p=p->next;
free(q);
head->next=p; //加上这行
}

如果是内存错误,应该是出现在free(q);这句话
改为delete q;试试
置空的时候要释放空间