我有一个我的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
),否则会出现内存泄漏。这取决于您如何分配节点:如果您new
它们,则使用 delete tmp
;如果malloc
它们,请使用 free(tmp)
。好吧,如果您不为每个节点分配内存(例如,您分配整个节点数组然后使用它们),那么您不应该tmp
释放,但您可能希望将节点标记为空闲(取决于您如何管理节点数组)。