gpt4 book ai didi

c - 从 C 中的链表中删除包含字符串的节点

转载 作者:行者123 更新时间:2023-11-30 17:10:56 24 4
gpt4 key购买 nike

我正在努力编写一种从链表中删除包含字符串的节点的方法。这是我所拥有的。

struct node { 

char name[128];
struct node *next;
};

struct node *list_delete(const char *name, struct node *list) {

if (list->next == NULL && strcmp(name, head_name) == 0) {

struct node *temp = list;
list = list->next;
free(temp);
return list;
}
struct node *head = malloc(sizeof(struct node));
head = list;
while (head->next != NULL) {
if (strcmp(name, head->name) == 0) {
struct node *temp = head;
head = head->next;
free(temp);
break;
}
head = head->next;
}
return list;
}

当我运行这个时,我收到错误:

double free or corruption (!prev)

我想看看我是否释放了不该释放的地方,但我想我已经释放了。我也是 C 新手,所以我还在学习中。

最佳答案

如果没有看到调用此函数的代码,您可能会遇到最后一个返回返回列表的问题;如果第一个项目已释放,您将返回最近指向该项目的指针释放了内存,并且有可能再次释放它。

关于c - 从 C 中的链表中删除包含字符串的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32622281/

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