gpt4 book ai didi

C++ 查找与链表相关的代码中的错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:09 25 4
gpt4 key购买 nike

有 2 段代码我似乎找不到错误。我知道这些里面有问题。一人一份。

int pop()
{
Node* temp = new Node();
temp = tail;
tail->prev()->setNext(NULL);
int tempV = temp->key();
delete temp;
return tempV;
}

另一段代码是这样的:

int main()
{
Node* t = new Node(0,NULL);
t = Node(1,t);
t = Node(2,t);
delete t;
}

我想了想这两段代码。对于第一段代码,我认为错误在于您不应该使用关键字 new 在堆上创建 Node* temp。它应该只是 Node* temp = tail;我相信。谁能证实这一点?

对于第二段代码,我认为错误是你不需要两者

t = Node(1,t); 
t = Node(2,t);

编辑::很抱歉我弄错了。它应该是节点而不是节点。我的 friend 告诉我它必须对内存做些什么。是否由于使用 new 声明了多个节点而导致内存泄漏?或者我们是否需要最后两个的新关键字?

谢谢

最佳答案

弹出元素时,不需要创建"new"节点。您必须删除链表的最后一个元素 - 而不是创建新节点。

对于你的第二个问题,你不需要

t = node(1,t)
t = node(2,t)

如果函数返回当前添加的节点。但是如果函数返回链表的表头,则需要。这取决于您如何编写 node 函数。

关于C++ 查找与链表相关的代码中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22677092/

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