gpt4 book ai didi

c++ - 删除链接对象

转载 作者:行者123 更新时间:2023-11-27 23:06:32 24 4
gpt4 key购买 nike

我有两个类:“node”和“poly”。节点对象链接在一起形成链表。多边形对象包含指向第一个节点的指针。我正在尝试为整个“poly”解除分配内存。我想删除多边形 - 然后在多边形析构函数中调用一个函数(类似于“freePoly”),这将帮助我遍历节点对象的整个链表 - 删除所有节点。

类定义如下:

class Node
{
private:
double coeff;
int exponent;
Node *next;
public:

Node(double c, int e, Node *nodeobjectPtr)
{
coeff = c;
exponent = e;
next = nodeobjectPtr;
}

~Node()
{
printf("Node Destroyed");
//???
}
class poly
{
private:
Node *start;
public:
poly(Node *head) /*constructor function*/
{
start = head;
}
~poly() /*destructor*/
{
//???
}

void freePoly();
};

void poly::freePoly()
{
//???
}

我已经尝试了很多东西,但基本上我卡在了我只删除第一个节点对象的地方。然后我丢失了指向其他节点的指针...并泄漏内存,因为我无法再访问它们以进行删除。

最佳答案

您可以通过使用 std::vector 而不是 Do-It-Yourself 链表来避免很多问题和工作。除非这是为了学习。

说了算

~poly() /*destructor*/
{
while( start != 0 )
{
node* p_doomed = start;
start = start->next;
delete p_doomed;
}
}

还有很多其他方法可以做到这一点,但上面的模式可以帮助您弄清楚如何做类似的事情。

关于c++ - 删除链接对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201153/

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