繁体   English   中英

为自定义LinkedList类添加方法

[英]Add method for custom LinkedList class

我一直在为自己正在研究的自定义链表实验室研究这种添加方法。 插入新节点后,我无法弄清楚如何将值移动一个索引。 这是我的源代码。

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;
}

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

同样在您的代码中,您并没有增加i的价值,而是始终在遍历整个列表。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM