【发布时间】:2011-05-06 00:03:43
【问题描述】:
嘿,我想知道 我编写了一个 C++ 链表,我在其中调用析构函数来遍历分配的链表并删除找到的每个节点。然而我发现,虽然它通过链表并删除每一次出现它仍然会打印出值。虽然只是一些废品价值。
但是当我删除linked_list 时,它不应该是下次不能打印吗?
我在删除列表时使用new 和delete 创建链接列表
sorted_list::~sorted_list()
{
// Destructor implementation
destroy(this->first);
cout << "Destructor called sorted_list" << endl;
}
void sorted_list::destroy(list_link* item)
{
if (item)
{
destroy(item->next);
delete item;
}
}
打印功能
void sorted_list::print() {
if(this->first)
{
iteratorn *traverse = new iteratorn(this->first);
while( !traverse->iterator_end() )
{
cout << traverse->iterator_get_key() << " ";
traverse->iterator_next();
}
delete traverse;
}
else
cout << "list empty" << endl;
}
【问题讨论】:
-
没有足够的代码。显示构建列表的代码,并显示打印出不应该输出的值的代码。
-
你删除这个->前两次(一次在销毁中)。
-
你不需要在析构函数中将
NULL(甚至0)分配给this->first。列表发布了,它消失了,完全无法访问。 -
@Roger Pate @wilhelmtell 感谢您的输入我删除了这个的双重删除->现在首先
标签: c++ linked-list