void SinglyLinkedList::removeBike(int c)
{
Node* current = head;
for(int i = 0; i < c; i++){ // traverse to desired node
current = current -> next;
}
if(current -> next != NULL && current -> prev != NULL){
current -> prev -> next = current -> next;
current -> next -> prev = current -> prev;
delete current; //delete node
}
else if(current -> next == NULL){
current -> prev -> next = current;
delete current;
}
else if(current -> prev == NULL){
current -> next -> prev = current;
delete current;
}
else
cout << "How did you make it this far?";
}
Я уверен, что я ничего не понимаю здесь, но исследования пока не помогли.Как удалить узел в двойном связанном списке правильно?
Логически это имеет смысл для меня, но я чувствую, что это слишком просто для работы, а это не так.
отредактировано: обновлен код минус входной проверки, и он ломается от меня, когда я ввожу любой int. также я должен, вероятно, переименовать класс в список с двойной связью ... только заметил, что
Лучший способ, которым я когда-либо видел, чтобы выяснить связанные списки, это привлечь узлы на листе бумаги, а затем рисовать во всех изменениях в привязке, требуемых шаг за шагом. – user4581301
'for (int i = 0; i
&& current! = NULL работает намного лучше, для меня ... И тогда вам нужно будет выяснить, что делать, когда вы завершаете ток NULL после цикла. –