这是DeleteList函数的正确实现吗? [通过堆链接的列表]

时间:2018-08-17 17:01:57

标签: c data-structures linked-list

我必须编写一个带列表的函数DeleteList(),释放其所有内存,并将其头部指针设置为NULL(空列表)。

这似乎可行,但idk确实可行,因为我实现的方式(我认为是错误的方式)与解决方案中的方式大不相同。我假设它仅删除几个节点,或者内存管理有问题。

private static final ObservableList<Country> countryList = FXCollections.observableArrayList();

1 个答案:

答案 0 :(得分:3)

您实际上并没有释放整个链表,而是要反复释放头节点。我建议您使用以下方法。

void DeleteList(struct node** headRef) { 
    struct node *ptr = *headRef;
    struct node *temp = NULL;

    while(ptr)
    {
          temp = ptr;
          ptr = ptr->next;
          free(temp);
    }

    *headRef = NULL;
    }