Я пытаюсь удалить узел по его положению, а элемент удаления строки в приведенном ниже коде вызывает ошибку seg, я пытался понять это какое-то время, но я не советовал. Вот метод удалить:C++ - Удаление узла в двусвязном списке вызывает ошибку сегментации
void* List::remove(long index){
if(index > this->size-1){
return NULL;
}
else {
long i = 0;
List::ListItem *item = this->head;
while(i <= this->size-1){
if(index == 0){
item->getNext()->setPrev(NULL);
this->head = item;
this->size--;
delete item;
break;
}
else if(indexOf(item->getData()) == index){
item->getPrev()->setNext(this->head->getNext());
item->getNext()->setPrev(this->head->getPrev());
this->size --;
break;
}
else {
item = item->getNext();
i++;
}
}
}
return NULL;
}
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –
Также этот алгоритм не стоит добавлять в реализацию связанного списка. Не для чего нужны списки. – DeiDei
@DeiDei Что не так с моим алгоритмом? Не могли бы вы уточнить, пожалуйста? –