Ошибка сегментации в linked list

110
04 июня 2019, 16:40

Есть функция deleteLast, которая удаляет первый элемент linkedlist'а.

Есть код:

template<typename T>
void LinkedList<T>::deleteLast()
{
    Node* nemp= head;//head- это указатель на объект класса Node
    while(nemp)//пока указатель не будет указывать на nullptr
        if(nemp->next->next==nullptr)//если укзатель next'а next указывает nullptr
            {
                delete nemp->next->next;
                nemp->next=nullptr;
                size--;
            }
        else
            nemp=nemp->next;
}

при runtime выдает ошибку сегментации. Как можно решить эту проблему?

Answer 1

Вы обращаетесь к nemp->next->next, где nemp->next может быть nullptr. Поэтому и получаете такую ошибку.

Возможный способ исправления: добавить в начало if проверку nemp->next != nullptr или просто nemp->next.

READ ALSO
Рекурсивный вызов main

Рекурсивный вызов main

Что будет при рекурсивном вызове функции main???

108
Изменить кодировку символа в C++

Изменить кодировку символа в C++

Так уж пришлось, что мне нужно сделать задание в C++ builder 6И такой вопрос, как изменить маленькую букву на большую через изменение кода символа

133
Ошибка в передаче аргумента в функцию

Ошибка в передаче аргумента в функцию

Есть ошибка, cmap передается в такую фукнцию

131
Не работает fstream C++

Не работает fstream C++

Изучаю работу с файлами в С++ Сделал абсолютно все как в примереВ консоль выводится сообщение Good!, но при этом файл не создается, а если вручную...

159