次のコードを使用して、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 要素が適切に削除されていないようです。どうしたの?