下面是创建链表的部分代码。
为了在析构函数中delete所有new出来的节点,我在链表的成员中加了个变量来保存链表的头(因为析构是无法带参数的啊)。
然后在DeleteAllNodes()的参数报错了,“a nonstatic member reference must be relative to a specific object”。
我觉得按照运行顺序,在调用DeleteAllNodes()之前,headNode已经指向了一个正确的值,不知道哪有问题。
class Node
{
public:
int data;
Node *next;
Node();
//Node(int values);
//~Node();
};
Node::Node()
{
data = 0;
next = NULL;
}
class MyList
{
public:
int ListSize;
Node *headNode;
MyList();
void DeleteAllNodes(Node *headnode);
~MyList();
};
MyList::MyList()
{
ListSize = 0;
headNode = NULL;
}
void MyList::DeleteAllNodes(Node *headNode2 = MyList::headNode)
{
if (headNode2 == NULL)
{
return;
}
Node *nextNode;
while (true)
{
nextNode = headNode2->next;
delete headNode2;
headNode2 = nextNode;
if (headNode2 == NULL)
{
break;
}
}
}
MyList::~MyList()
{
DeleteAllNodes();
}
(没有C币了见谅)