gpt4 book ai didi

C++:这是递归删除链表的正确方法吗?

转载 作者:行者123 更新时间:2023-11-28 03:20:56 26 4
gpt4 key购买 nike

我想知道这是否正确,因为 XCode 在执行 getNext() 时给我一个 EXC_BAD_ACCESS 错误,但 Visual Studio 没有。

void deleteList(LinkedList* node) {

if (node == NULL)
return;
else {
delete node;
node=NULL;
deleteList(node->getNext());
}
}

最佳答案

您删除一个节点,使其无效,然后使用它调用 getNext()。这是未定义的行为。

只需在节点析构函数中做同样的工作。

struct NodeT
{
NodeT* next;
~NodeT()
{
delete next;
}
};

要么那样,要么先删除尾部,然后才删除节点本身:

void deleteList(LinkedList* node) {

if (node == NULL)
return;
else {
deleteList(node->getNext());
delete node;
}
}

关于C++:这是递归删除链表的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462039/

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