gpt4 book ai didi

c++ - 如何为递归函数编写方法定义?

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:30 24 4
gpt4 key购买 nike

我有一道作业题说:

Destructor_Helper 是一个递归函数,用于释放单向链表的每个节点。为 destructor_helper 编写方法定义。

 struct Node
{
string data;
Node *next;
}

void List::~List() {
destructor_helper(head);
}

我的回答是:

     void Destructor_Helper(Node *n) {
cout<< n->data << endl;
if (n->next != NULL)
Destructor_Helper(n->next);
}

我的答案被算错了,谁能帮我解决一下问题

最佳答案

您的答案被计算错误,因为您没有进行任何重新分配。

要释放链表,您可以存储下一个节点,释放当前节点,然后递归地转到下一个节点。我会这样:

void destructor_helper(Node *n) {
if (n == NULL) return;
Node* next = n->next;
delete n;
destructor_helper(next);
}

您可以很容易地发现递归的基本情况,即当前节点为NULL 时。那时我们只需要返回。然后,我们将下一个节点存储在名为 next 的局部变量中,并删除当前节点。 next局部变量可以是NULL,没关系。然后我们递归地传递 next 以删除列表的其余部分。

关于c++ - 如何为递归函数编写方法定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935820/

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