Удаление узла в данной позиции в двусвязном списке - PullRequest
0 голосов
/ 15 марта 2019

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

public void remove(int pos)

{

 if (head == last)

        {
            head = null;
            last = null;
        }
        if (pos == size - 1)

            return removeLast();

        if (pos == 0)

            return removeFirst();

        else
        {
            DoubleListNode<E> current = head;

            for (int i = 0; i < pos - 1; i ++)

            {

                current = current.getNext();

            }
            current.setNext(current.getNext().getNext());

            current.getNext().getNext().setPrev(current);

            return current.getData();
        }
}

1 Ответ

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

Шаги для удаления из двусвязного списка:

Пусть удаляемому узлу является del.

  1. Если удаляемый узел является головным узлом, то измените указатель заголовка на следующийтекущий заголовок.
  2. Установить следующий из предыдущих для del, если существует предыдущий для del.
  3. Установить prev рядом с del, если существует del.

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

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