链表清除功能

Moh*_*ama 1 c pointers linked-list

我正在尝试使用此函数 clearList 在程序结束时清除链表,但我不知道此函数定义到底有什么问题。

void clearList(struct node *list) { 
    struct node *p; 
    for(p = list; p != NULL; p = p->next)
        free(p);
}
Run Code Online (Sandbox Code Playgroud)

γηρ*_*όμε 5

在释放节点之前,您需要获取下一个指针:

p = list; //list is the header

while( p != NULL ){
    list = list->next;

    free(p);

    p = list;
}
Run Code Online (Sandbox Code Playgroud)