我正在实现一个LinkedList。除了重做工作,我可以重用我编写的公共函数来删除和释放析构函数中的节点(也包括内存)。输出结果很好/正确,但是我想知道我是否在幕后遗漏了任何东西。我见过this,但是我主要担心的是我是否在释放C ++代码中的内存方面做得正确。
我的破坏者:
<div class="content">
<div draggable="true" class="drag box">Drag</div>
<div class="drop box"></div>
<div class="pixel"></div>
</div>
我的公共函数DeleteEndVal();:
~LinkedList(){
Node *next = head;
while(head != NULL){
DeleteEndVal();
}
}
答案 0 :(得分:2)
您可以在析构函数中调用函数,因此首先回答您的原始问题:是的,没关系。
不过还有其他几个方面:
首先,您不应该手工重新编码基本概念,例如链表。这是容易出错的和/或可能是效率低下的实现。请改用基础类或标准C ++库。
坚持代码时,我想知道为什么:
Node *next = head;
。恕我直言,它什么也没做。tail
属性。如果该方法正在删除tail元素(也许将其重命名为DeleteTail
),那么您不应该遍历整个链表。取而代之的是,获取尾部的位置,获取其前一个元素(我假设您的链接列表是双向的),然后更新该链接。