c - 链接列表中的元素没有被删除

标签 c data-structures linked-list

struct node {  
  struct node *next; 
  int data;
} *head;

将元素插入链表后,我使用此删除函数来删除链表的元素,但程序卡住了。我不知道哪里出错了。请帮助我。

void delete(int num1) {
   struct node *del ,*prev_node;
   del = head;

   if(del == NULL) {
     printf("\n The list is empty,cant delete element");
   } else {
     while(del != NULL) {
       if(del->data == num1) {
         if(del == head) {
           head = del->next;
           free(del);                  
         } else {
           prev_node->next = del->next;                      
           free(del);                    
         }
       } else {
         prev_node = del;
         del = del->next;
       }
    }
  }
}

最佳答案

释放 del 后永远不会将其设置为 NULL,因此它永远不会离开循环。

free(del);
del = NULL;

关于c - 链接列表中的元素没有被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393589/

相关文章:

c++ - 如何为 C/C++ 传递可选命令行参数?

c - 使用双指针进行二叉树层次顺序遍历

c - 在C中读取和写入结构到二进制文件,然后打印结构元素

java - 基于集合的三元组的高效匹配算法

c - Windows C 编程 ReadFile CHAR 或 WCHAR

c++ - 为 Erlang 提取 C 函数签名

c - 我应该选择哪种数据结构以及为什么

python - 删除 Python 双链表中的节点时遇到问题

c++ - 池类抛出错误

c++ - 由带节点的链表组成的类似 STL 的列表