我在循环列表中“清除”节点的算法遇到了一些问题:大多数情况下程序崩溃,有时不会。我很确定算法没问题,我对解决方案一无所知...... :-(
这里有一些代码:
clear()
函数(注:是循环列表的mFreenode
“头尾自由”节点):
List* clear() {
if (mFreenode->getNext() != 0) {
Node<T>* current = mFreenode->getNext();
Node<T>* temp = 0;
while (current != mFreenode) {
temp = current->getNext();
delete current;
current = temp;
}
}
mFreenode->setNext(0);
mFreenode->setPrev(0);
mSize = 0;
return this;
}
这是Node
析构函数:
~Node() {
delete &item;
}
有什么建议吗?