这是删除C中链表的正确方法吗?

时间:2014-02-09 13:28:13

标签: c linked-list

我正在学习C并习惯指针。我想知道一个简单的链表结构,这是删除列表的正确方法吗?我被告知你必须手动处理所有事情(我更像是一个Java人,但试图转换)。对此有何建议或建设性批评?提前谢谢。

/*   assume a struct with: int data; node *next; 
 *   and a global variable node *root; */
void delete_list() {
    if(root==NULL)return;
    node *temp = root;
    while(root!=NULL) {
        temp=root;
        root=root->next;
        free(temp);
    }
}

1 个答案:

答案 0 :(得分:2)

是的,您的代码没问题。您可能希望delete_list将指向根元素的指针作为变量,并且您可以更简洁地编写它,例如。

void
delete_list (node *list)
{
    while (list)
    {
        node *tmp = list->next;
        free (list);
        list = tmp;
    }
}