gpt4 book ai didi

c++ - 将新节点添加到链表的新方法

转载 作者:太空狗 更新时间:2023-10-29 23:21:40 25 4
gpt4 key购买 nike

void addNewNode (struct node *head, int n)
{
struct node* temp = (struct node*) malloc(sizeof(struct node));
temp -> data = n;
temp -> link = head;
head = temp;
}

上面给出的代码是在链表头部添加新节点的函数的普遍错误版本。通常正确的版本是这样的,

void addNewNode (struct node **head, int n);
void addNewNode (struct node * &head, int n);

我为此目的设计了另一个但简单的函数,效果很好。

struct node* addNewNode (struct node *head, int n)
{
struct node* temp = (struct node*) malloc(sizeof(struct node));
temp -> data = n;
temp -> link = head;
return temp;
}

但我还没有看到在代码和教程中使用或讨论过这种方法,因此我很想知道这种方法是否存在缺陷。

最佳答案

缺陷在于您依赖于调用者执行将头指针更新到列表的最后一步。

如果调用者忽略这样做,编译器不会提示,并且出于所有意图和目的,列表似乎没有改变(并且您将泄漏节点的内存)。

关于c++ - 将新节点添加到链表的新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/257259/

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