删除双链接列表抛出异常Java的方法



所以我在 Java 中有一个双链接列表,我正在测试它,但是当我决定在同一索引中删除两个元素时,它抛出了一个空指针异常

这是我的清单 [ A, B, C, D, E]这是我的考验

System.out.println("Item removed at index 3: " + list.removeAtIndex(3));
System.out.println(list);
//throws exception at following line
System.out.println("Item removed at index 3: " + list.removeAtIndex(3));
System.out.println(list);

列表应为 [ A, B, C]但它会引发异常这是我对 removeAtIndex 方法的实现

public E removeAtIndex(int index) {
    DoublyLinkedNode<E> node = firstNode;
    for(int i = 0; i < index; i++)
    {
        node = node.getNext();
    }
    E item = node.getItem();
    node.getPrevious().setNext(node.getNext());
    node.getNext().setPrevious(node.getPrevious());
    return item;
 }

我该如何解决这个问题?

编辑:我忘了说,当我在一个索引处删除然后再次删除但在另一个索引处时,它工作得很好

我怀疑有一个问题:

您没有使用哨兵(虚拟)标头和尾节点。所以当你从最后删除并打电话

node.getNext().setPrevious(node.getPrevious());
node.getNext();//actually returns null at the end of a list

在调用 getNext 和 getPrevious 方法后,您需要检查 null

最新更新