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

标签 c++ recursion data-structures

我有一道作业题说:

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/

相关文章:

java - 这种递归回溯解决方案如何解决算术表达式?

java - 对于大数据量,什么数据结构更快?

c++ - 按键和值排序的关联容器

c++ - C++ 单元测试器中的自定义断言

c++ - 如何将指针初始化为空

C++读取PDF文件

Python脚本递归重命名文件夹和子文件夹中的所有文件

python - 递归函数内存使用

algorithm - 整数数组的整除算法

c++ - 如何读写数组中的图像?