我正在尝试使用以下def创建一个链接列表:
/**
* The definition of node and linked list.
*/
typedef struct _node{
void * val;
struct _node * next;
} node;
typedef struct{
node * head;
} linkedlist;
我有一个完全删除它的功能(不是一个sigle节点,而是整个列表):
void clean_list(linkedlist * ll){
node * temp;
curr = ll->head;
while(ll->curr->next != NULL){
temp = curr;
curr = curr->next;
free(temp->val);
free(temp);
}
}
我的问题是:
我正在使用MacBook Pro并使用gcc作为编译器。
答案 0 :(得分:2)
我永远不会理解为什么拥有编译代码的人会发布不编译的代码。但是,假设链接列表本身需要被释放,这就是我接近它的方式(未经测试):
void clean_list(linkedlist *pll)
{
node *pnext;
for (node *pnode = pll->head; pnode != NULL; pnode = pnext)
{
pnext = pnode->next;
free(pnode->val);
free(pnode);
}
free(pll);
}
答案 1 :(得分:0)
void clean_list(linkedlist * ll){
node *temp, **ppp;
for (ppp= &ll->head; temp = *ppp; ){
*ppp = temp->next;
free(temp->val);
free(temp);
}
}