Data structures 删除链接列表

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

我试图使用free()函数删除完整的链表,但它不起作用。为什么?

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节点。其余的呢?什么叫“它不工作”?它会崩溃吗?还是让内存被分配?或者是它引起了其他问题?“它不工作”不是对问题的有用描述。