根据用户输入从链接列表中删除节点

时间:2016-10-02 20:48:53

标签: c linked-list structure nodes

尝试了解如何正确设置将根据用户指定的参数从链接列表中删除的功能。所以我有一个名为global的{​​{1}}变量,其中包含所有list。如果链接列表中有多个结构,我可以获取列表以删除用户想要删除的节点,但由于某种原因,如果只有一个节点或我要删除的节点是列表的头部,则函数不会删除它。我们将非常感谢这个问题的任何方向。

dog structs

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

if (previous == NULL) {
      tempList = tempList->next;
          }  

首先,tempList是一个局部变量,因此您不会真正删除头部。下次进入例程时,list仍然指向相同(有效)的值。

其次,你不能释放记忆。

正确的代码:

if (previous == NULL) {
      list = tempList->next;  // change global variable so head is "tempList->next"
      free(tempList);  // free templist memory else you get memory leak
          }