我有以下结构的链表:

struct pomiar {
    unsigned int nr_pomiaru;
    unsigned int nr_czujnika;
    char data_i_czas[20];
    double temp;
    struct pomiar *nast;
};

我用 malloc() 分配所有元素:每个元素都由前一个元素指向。

最佳答案

是的,您应该遍历列表,获取当前元素的 nast 指针的副本,然后释放当前元素,然后将复制的 nast 值放入当前元素中。内存空闲后,您将无法(可靠地)访问它——不要!因此复制。

void free_list(struct pomiar *list)
{
    while (list != NULL)
    {
        struct pomiar *nast = list->nast;
        free(list);
        list = nast;
    }
}

关于C:删除链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49478325/

10-13 08:44