销毁单链表问题

void DestoryList(LNode *head)
{
LNode *p,*q;
p=head;
q=head->next;
while(p)
{
free(p);
p=q;
q=q->next;
}
}
这个有什么错误吗??运行时有问题

while循环中,p指向最后一个结点时,执行一次,free(p)释放p的空间,但下面来那个剧仍旧执行了,但q->next已经为空,所以报错。你改为do……while()格式。
do{
p=q;
q=q->next;
free(p);
}while(p);
应该是你的最后一个节点的next没有指空null。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-11
void DestoryList(LNode *head)
{
LNode *p,*q;
p=head;
q=head->next;
while(p)
{
free(p);
p=q;

/* 使用指针前判断其非空 */
if (q)
q=q->next;
}
}本回答被提问者采纳
相似回答