gpt4 book ai didi

c - 使链表的节点成为最后一个节点的功能?

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:47 24 4
gpt4 key购买 nike

此函数将获取链表的特定节点并将其作为最后节点。

void lastNode(struct list *node)
{
struct list* temp = node->next;
node->next = NULL;
struct list* temp2;
while(temp)
{

temp2 = temp->next;
printf("%p \n",temp);
free(temp);
temp = temp2;
}

}

int main()
{
struct list d={4,NULL};
struct list c={3,&d};
struct list b={2,&c};
struct list a={1,&b};


struct list *node = &a;

lastNode(&b);

while(node)
{
printf("%d \n",node->d);
node=node->next;
}
return 0;
}

但在释放节点时出现错误。

最佳答案

查看您的完整代码:

struct list c={3,&d};
struct list b={2,&c};

lastNode(&b);

free temp 是不合法的,因为它不是使用 malloc 分配的。

struct list* temp = node->next; /* temp is now &c. You can't free it. */
while(temp)
{
/* ... */
free(temp); /* Tries to free &c which is on the stack. */
}

关于c - 使链表的节点成为最后一个节点的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6885232/

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