我正在学习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);
}
}
答案 0 :(得分:2)
是的,您的代码没问题。您可能希望delete_list
将指向根元素的指针作为变量,并且您可以更简洁地编写它,例如。
void
delete_list (node *list)
{
while (list)
{
node *tmp = list->next;
free (list);
list = tmp;
}
}