我在一些作业中遇到了一个奇怪的错误,它让我用链表制作了一个堆栈。我的程序中的所有功能都可以正常工作,即使在我没有节点的开始,或者在删除一些节点之后也是如此。但是当我创建节点并将它们全部删除以便我回到零时,每个函数都会导致崩溃。我已经尝试研究这个问题,但我发现的解决方案看起来几乎与我已经得到的相同,所以显然我没有看到一些关键的东西。
这是节点删除功能(我怀疑是这一切的罪魁祸首)
void remove(node** root)
{
node* temp = *root;
node* previous = 0;
if(*root)
{
while((*root)->next)
{
previous = *root;
*root = (*root)->next;
}
delete *root;
*root = temp;
if(previous)
{
previous->next = 0;
}
}
else
{
std::cout<<"cannot delete items from empty list\n";
}
}
这是节点插入功能
void insert(node** root)
{
node* temp = *root;
if(*root)
{
while((*root)->next)
{
(*root) = (*root)->next;
}
(*root)->next = new node;
(*root)->next->data = getnum();
(*root)->next->next = 0;
*root = temp;
}
else
{
(*root) = new node;
(*root)->data = getnum();
(*root)->next = 0;
}
}
我相当确定问题出在我链接的代码中,但以防万一,这是完整作业的 pastebin http://pastebin.com/AWtG4qjD