c++ - 删除链接对象

标签 c++ class object linked-list

我有两个类:“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/

相关文章:

java - 如何确定 Java 类使用了哪些方法

c++ - 遍历结构和类成员

python - 如何在自定义排序函数中实现对对象的特定属性进行排序?

php - 在php中替换数组中的对象

c++ - 创建一个 "mountable"文件系统,从哪里开始?

c++ - 不要在 Visual Studio 2012+Qt Visual Studio 加载项 1.2.1 中进行调试

c++ - element_t 数组中的段错误

python - Python.org 上的类(class)教程

javascript - 将项目添加到数组或替换它(如果它具有相同的 ID)

c# - 如何使用 C++ 或 C# 加载 cmyk 图像并更改每个像素的 cmyk 值?