いくつかの宿題で、リンクリストを使用してスタックを作成するという奇妙なエラーが発生しました。私のプログラムのすべての関数は、ノードがない最初のときや、いくつかを削除した後でも、完全に機能します。しかし、ノードを作成してすべて削除してゼロに戻すと、すべての関数がクラッシュします。私は問題を調査しようとしましたが、私が見つけた解決策は私がすでに持っているものとほとんど同じに見えるので、明らかに私が見ていない重要なものがあります。
これがノード削除機能です(これがすべての原因であると私が疑う機能です)
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;
}
}
リンクしたコードのどこかに問題があると確信していますが、そうでない場合に備えて、完全な割り当てへのペーストビンを示しますhttp://pastebin.com/AWtG4qjD