Может ли кто-нибудь объяснить, почему следующий метод удаления не работает? Кажется, создается бесконечный цикл по значению, которое я пытаюсь удалить. Он должен перебирать связанный список, удалять все экземпляры значения, переданного методу, и возвращать общее количество удаленных узлов (return num;
).Связанный список Метод удаления
public int delete(T value)
{
int num = 0;
ListNode<T> trav = head;
ListNode<T> next = head.getNext();
while(trav != null) {
if(trav.getValue().compareTo(value) == 0) {
trav = next;
num++;
}
if(next.getValue().compareTo(value) == 0) {
trav = next.getNext();
num++;
}
trav = trav.getNext();
}
return num;
}
Вы можете использовать свой отладчик, чтобы выполнить свой код, однако некоторые вещи явно ошибочны. а) вы никогда не обновляете голову; б) вы никогда не меняете 'next', поэтому, когда вы делаете' trav = next; 'это вернет вас ко второму элементу. c) вы фактически не удаляете какие-либо узлы. d) Проверка на 'if (next', похоже, не указана. –