Удалить первое вхождение Двусвязный список Java - PullRequest
0 голосов
/ 16 марта 2019

Может кто-нибудь сказать мне, что отсутствует в моем коде. Я пытаюсь удалить первое вхождение данного значения узла.

Он проходит очень мало тестов, но я не уверен, что мне не хватает. Вот мой код:

public boolean remove(E obj) {
    if (obj == null)
        throw new IllegalArgumentException("Violation of precondition : remove(E obj)");
    DoubleListNode<E> current = head;
    for (int i = 0; i < size; i ++) {
        if (current.getData().equals(obj)) {
            E result = remove(i);
            return true;
        }
        current = current.getNext();
    }
    size --;
    return false;
}

1 Ответ

0 голосов
/ 16 марта 2019

Этот рекурсивный вызов метода remove () внутри блока if выглядит неправильно.

Вы уже находитесь в списке, вы определили первый соответствующий объект. Так что теперь ваш код должен действительно удалить этот соответствующий объект. Удаление означает обновление обеих ссылок соответственно.

Делай эти вещи на бумаге! Нарисуйте двойной связанный список с узлами и связями между ними. Затем спросите себя, что на самом деле означает удаление узла, который имеет одну или две ссылки, входящие (и потенциально выходящие). Вы должны будете изменить ссылки с предыдущего узла и тот, который следует за узлом, который должен быть удален!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...