gpt4 book ai didi

在 C 中复制链表

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:31 27 4
gpt4 key购买 nike

我写了一个复制链表的函数。不幸的是,它没有完全复制列表。

Node *copy(Node *list)
{
Node *copy2;
while(list != NULL) {
copy2 = malloc(sizeof(Node));
memcpy(copy2,list,sizeof(Node));
list = list->next;
if(list != NULL) {
copy2->next = malloc(sizeof(Node));
copy2 = copy2->next;
}
}
return copy2;
}

最佳答案

它只给你最后一个元素,它也有很多内存泄漏。

  1. 您不需要为每个元素分配两个 malloc。
  2. 你需要在列表的头部和当前复制的元素中保持引用
  3. 您需要保留指向引用的指针以更改前一个节点内的指针。

试试这个。

Node *copy(Node *list)
{
Node *newList = NULL;
Node **newIt = &newList;
while(list!=NULL)
{
*newIt = malloc(sizeof(Node));
memcpy(*newIt,list,sizeof(Node));

list = list->next;
newIt = &((*newIt)->next);
}
return newList;
}

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

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