【发布时间】:2022-07-08 01:40:00
【问题描述】:
我创建了这个函数来递归地从双向链表中删除节点。这里的问题是,基于调用堆栈,它从第二个开始,所以它不会删除整个列表。我可以从我调用它的方法中删除剩余的节点,但应该有办法解决这个问题。有没有办法解决这个问题?
void RecursiveClear(const Node* _curr) {
if(_curr != nullptr) {
//_curr->prev = _curr;
_curr = _curr->next;
RecursiveClear(_curr);
}
if (_curr != nullptr) {
delete _curr;
}
}
【问题讨论】:
-
如果你不想从第二个节点开始,为什么你要做的第一件事就是将指针提前到第二个节点?它完全按照你的吩咐去做。如果你想让它做其他事情,然后告诉它做 that 代替。这可能是学习如何使用调试器的好时机,这样您就可以准确地看到和理解您的代码在做什么。
-
好点没用。我会记住这一点。谢谢
标签: c++ linked-list doubly-linked-list