我正在尝试使用以下代码删除 C 中单链表的所有节点。
void free_all(struct cd *head){
struct cd *tmp;
tmp = head->next;
while(tmp != NULL){
head->next = tmp->next;
free(tmp);
tmp = head->next;
}
free(head->next);
free(head);
head=NULL;
}
但是,如果我在此之后打印链表的所有元素以检查列表是否为空,则始终打印“头”元素。所以看起来 head 元素没有被正确删除。怎么了?