gpt4 book ai didi

c - 如何删除整个列表而不是仅删除列表中的元素?

转载 作者:行者123 更新时间:2023-11-30 14:32:51 25 4
gpt4 key购买 nike

以下是我必须创建列表和列表中的元素的代码。现在我想实现一个删除整个列表的函数,而不仅仅是清空列表。我该怎么做?

struct node
{
int number;
struct node* next;
};

struct forward_list
{
struct node* head;
};

typedef struct node node;

node* create_node(int number, node* next)
{
node* result = (node*)malloc(sizeof(node));
result->number = number;
result->next = next;
return result;
}


//edit
void destroy_node(node* const this)
{
free(this);
}
void destroy_list(forward_list* const this)
{
/* TODO */
}

最佳答案

看到您的编辑,我认为您只需在 destroy_list 中迭代调用 destroy_node 即可清空列表,从而销毁它。

[编辑]

最后我必须将列表的头部设置为NULL。感谢您的评论!

类似这样的事情:

void destroy_list(forward_list* const this)
{
node* temp = this->head;
node* to_delete;

while(temp != NULL){
to_delete = temp;
temp = temp->next;
destroy_node(to_delete);
}
this->head = NULL;

}

关于c - 如何删除整个列表而不是仅删除列表中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59657380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com