【发布时间】:2021-10-30 18:37:50
【问题描述】:
我知道下面给出的代码中的逻辑是错误的,但我怀疑当我们删除具有下一个节点地址的 p 时会发生什么。
析构函数会做什么? 它会转到所有节点使它们为空,直到节点 p 中的 Next 不变为空
还告诉我析构函数对内存的作用。 我已经阅读了很多关于析构函数、释放、删除和释放的文章,但我仍然感到困惑。 主要的困惑在于释放和析构函数。
class Node {
public:
int data;
Node * next;
Node(int data){
this -> data = data;
this -> next = NULL;
}
~Node() {
if(next) {
delete next;
}
}
};
void deleteAlternateNodes(Node *head) {
//Write your code here
Node *p =head;
Node *q =NULL;
if(p->next == NULL)
{
return;
}
while(p!=NULL)
{
q=p;
p=p->next;
q->next = p->next;
delete p;
p = q->next;
}
}
【问题讨论】:
-
如果您使用一种语言进行编程,请不要标记其他不相关的语言。
标签: c++ memory-management destructor singly-linked-list recursive-datastructures