gpt4 book ai didi

c++ - 链表,removeFirst() 不工作

转载 作者:行者123 更新时间:2023-11-28 00:41:11 25 4
gpt4 key购买 nike

我的 g++ 似乎不喜欢这个函数,我也不知道为什么。

我写它可能有错误,但我看不到编译器指示的错误。

我把相关部分粘贴在这里。

// STRUCT
struct node {
int data;
node * next;
};

// PROTOTYPE
void removeFirst( node ** root );

// DEFINITION
void removeFirst( node ** root ) {
node * tmp = *root
*root = tmp->next; // is equivalent to (*root)->next
}

linkedLists.cpp:89:2: error: invalid operands to binary expression ('node *' and 'node **')
*root = tmp->next;
^~~~~
1 error generated.

注意:我实际上不需要删除 tmp,因为它只是一个普通的 node *

最佳答案

在第一次赋值后你错过了;。因此,编译器像这样读取您的函数

node *tmp = *root * root ...

这会导致错误。 (提示:如果你不能得到一个编译器错误,总是向后看一行。)

此外,请考虑在删除第一个节点后释放内存 (tmp),否则会发生内存泄漏。这取决于您如何分配节点:如果您新建它们,则使用delete tmp;如果您 malloc 它们,请使用 free(tmp)。好吧,如果您不为每个节点分配内存(例如,您分配整个节点数组然后使用它们),那么您不应该释放 tmp,但您可能希望将节点标记为空闲(取决于您如何管理节点数组)。

关于c++ - 链表,removeFirst() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815275/

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