Data structures 删除链接列表
我试图使用free()函数删除完整的链表,但它不起作用。为什么?Data structures 删除链接列表,data-structures,Data Structures,我试图使用free()函数删除完整的链表,但它不起作用。为什么? void delete(Node** head_ref) { free(*head_ref); return; } delete(&head); 您只是在删除列表的头节点。其余的节点仍然存在。有两种方法可以做你想做的事情 void delete(Node** head_ref) { if(head_ref==NULL){ retu
void delete(Node** head_ref)
{
free(*head_ref);
return;
}
delete(&head);
您只是在删除列表的头节点。其余的节点仍然存在。有两种方法可以做你想做的事情
void delete(Node** head_ref)
{
if(head_ref==NULL){
return;
}
delete(head_ref->next);
free(*head_ref);
return;
}
delete(&head);
如果你不想递归的话
void delete(Node** head_ref)
{
Node** temp_head = head_ref;
while(temp_head!=NULL){
temp_head = head_ref;
head_ref = head_ref->next;
free(*temp_head);
temp_head = head_ref;
}
return;
}
delete(&head);
PS我已经很长时间没有用C编写代码了,所以如果有任何错误,请告诉我。您只是在删除head节点。其余的呢?什么叫“它不工作”?它会崩溃吗?还是让内存被分配?或者是它引起了其他问题?“它不工作”不是对问题的有用描述。