Элементы удаление из списка
помогите разобраться с удалением элементов списка.При попытке удалить у меня выводить выходит ошибка .Я не понимаю что делать
void removeElem(int idx) {
Node *current = Head;
Node *temp = NULL;
int i = 0;
for (int i = 0; i < idx; i++) {
current = current->Next;
}//обращение к элементу
if (current->Prev != NULL )
current->Prev->Next = current->Next;
if (current->Next != nullptr) {
current->Next->Prev = current->Prev;
delete temp;
}
}
P.S Я еще новичок в программирование, поэтому прошу обьяснить как это работает
Ответы (1 шт):
Во-первых, надо проверять, а есть ли такой элемент - ведь может оказаться так, что вы дошли до конца списка и current стал равен NULL - какой уж тут current->Next...
for (int i = 0; i < idx; i++) {
current = current->Next;
}
Сами поймете, как проверить?
Во-вторых, после инициализации значением NULL вы ни разу, ничего не присвоили переменной temp, но вызываете для нее delete. Это не запрещено, но бессмысленно...
Опять же - сами разберетесь, какой именно указатель нужно удалять?...
Само собой, все эти замечания имеют смысл, если у вас правильно сформирован список, элементы выделены через new, доступен Head и так далее.
Еще - ощущение списывания без понимания. Иначе зачем объявлять переменную i два раза или одновременно использовать NULL и nullptr?