我正在使用类似于 Stack 的容器用 C++ 编写代码。
class Stack {
public:
int data;
Stack *next;
void push();
void pop();
~Stack() {
delete next;
}
};
问题出在递归析构函数中。如果我推送数十万个元素,析构函数会崩溃并导致堆栈溢出。是否可以以非递归方式更改它?
最佳答案
一个自然的解决方案是拥有一个包含实际数据和链接的内部 Node
结构。然后 Stack
类只有一个指向列表中第一个节点的指针,并且可以轻松地遍历列表以删除每个节点。
关于c++ - 是否可以像容器一样在堆栈中创建非递归析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832156/