添加自定义LinkedList类的方法

时间:2017-04-02 22:12:23

标签: java

我一直致力于为我正在开发的自定义链接列表实验室添加此方法。一旦插入新节点,我无法弄清楚如何将值移过一个索引。这是我的源代码。

public void add(int index, Object element) throws IndexOutOfBoundsException {
    if(index > size() || index < 0) {
        throw new IndexOutOfBoundsException();
    }

    ListNode newNode = new ListNode(element, null);

    if(head == null) {
        head = newNode;
        return;
    }

    ListNode nextNode = head.nextNode;
    ListNode currNode = head;

    int i = 0;
    while(currNode!= null) {

        if(index == i) {
            break;
        }

        currNode = nextNode;
        //Breaks down here with null pointer exception
        nextNode = nextNode.nextNode;

    }

    currNode = newNode;
    currNode.nextNode = nextNode;
}

2 个答案:

答案 0 :(得分:2)

当您迭代最后一个节点时,它会抛出空指针,下一个节点指向null。如果您必须在最后添加新节点,请检查下一个节点是否也为空。

同样在你的代码中,你没有增加i的值,总是迭代整个列表。

答案 1 :(得分:0)

我真的不知道你想在这里实现什么,我同意@Pritam Banerjee的评论。但是你的代码中一个明显的问题是你永远不会递增i,所以你永远不会突破你的while循环,并且在某些时候你会打到列表的末尾而nextNode.nextNode将是null,因此你的例外。 (另请注意,在currNode之前,nextNode.nextNode将为null。)