gpt4 book ai didi

c - 删除链表中的第一个节点

转载 作者:行者123 更新时间:2023-11-30 16:27:14 26 4
gpt4 key购买 nike

我正在尝试删除链接列表中的第一个节点,但我不知道该怎么做。我的链接列表如下所示

typedef struct availableForRent{
int milage;
char plateNum[8];
struct availableForRent * next;
} availablreForRent;

我的链表的初始节点是硬编码的,就像这样

struct availableForRent * head = NULL;
head = malloc(sizeof(struct availableForRent));
head->milage = 190000;
fillString(head->plateNum);
head->next = NULL;

fillString 只是获取用户输入并将其放入数组中

我通过像这样的推送功能将成员添加到我的列表中

void pushAvailable(struct availableForRent * head) {
struct availableForRent * current = head;
while (current->next != NULL) {
current = current->next;
}

current->next = malloc(sizeof(struct availableForRent));
printf("Enter a milage amount: ");
scanf("%d", &current->next->milage);
fillString(current->next->plateNum);
current->next->next = NULL;
}

我删除第一个成员的函数如下所示

struct availableForRent * next_node = *head;

if (next_node->next == NULL) {
printf("Cannot remove member as it is the only data in the list!\n");
return;
}

next_node = next_node->next;
free(*head);
*head = next_node;

当我运行我的程序时,我收到此错误消息,

rentalQ1(2799,0x7fff9d09b380) malloc: *** error for object 0x7ffee8f62a08: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

这是否意味着我尝试释放的节点不存在或其他原因?

最佳答案

看来我的问题是没有分配 next_node 。

next_node = malloc(sizeof(struct availableForRent));

关于c - 删除链表中的第一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52808210/

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