Моя функция удаления узла связанного -списка приводит к сбою других частей моей программы

Я сталкиваюсь со странной ошибкой в ​​​​некоторой домашней работе, из-за которой я делаю стек со связанным списком. Все функции в моей программе работают отлично, даже в начале, когда у меня нет узлов, или после удаления нескольких. Но когда я создаю узлы и удаляю их все, чтобы вернуться к нулю, каждая функция вызывает сбой. Я пытался исследовать проблему, но решения, которые я нашел, выглядят почти идентичными тем, что у меня уже есть, поэтому, очевидно, есть что-то критическое, чего я не вижу.

Вот функция удаления узла (, которую я подозреваю во всем этом)

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

6
задан Bill the Lizard 23 September 2012 в 01:50
поделиться