0

При удалении элемента со списка с индексом 0 генерируется исключение, нужна помощь в исправлении кода метода remove.

        @Override
public E remove(int index) {
    if (size > 0) {
        checkIndexAndSize(index);
        Node<E> node;
        node = firstNode.next;
        for (int i = 0; i < index; i++) {
            node = node.next;
        }
    if (size &gt; 1) {
        node.prev.next = node.next;
        node.next.prev = node.prev;
    }
    size--;
    return node.currentElement;
}
throw new NegativeArraySizeException(&quot;The list is empty, deletion is impossible&quot;);

}

Ошибка

Slavuuhhaaa
  • 101
  • 4

1 Answers1

0

Решил проблему, при удалении нулевого элемента нужно менять ссылку не у предыдущего а у первого листа, в итоге получится:

        @Override
public E remove(int index) {
    if (size > 0 && index - 1 < size) {
        Node<E> node = firstNode.next;
        checkIndexAndSize(index);
        if (index == 0) {
            firstNode.next=node.next;
            node.next.prev=firstNode;
        } else if (index > 0) {
            for (int i = 0; i < index; i++) {
                node = node.next;
            }
            if (size > 1) {
                node.prev.next = node.next;
                node.next.prev = node.prev;
        }
    }

    size--;
    return node.currentElement;
}
throw new NegativeArraySizeException(&quot;The list is empty, deletion is impossible&quot;);

}

Slavuuhhaaa
  • 101
  • 4