Java / Implementing LinkedList



我试图通过嵌入类来实现链表,但我有将元素插入列表的问题。为什么我的解决方案不起作用?我可以用get()方法返回一个元素,但是在迭代器到达目的地后,我不能插入一个元素。

public void insert(int index, int value) {
    Node iterator = head;
    int i=0;
    while(iterator != null) {
        if(i++ == index) {
            iterator = new Node(value, iterator);
            return;
        } else {
            iterator = iterator.next;
        }   
    }       
}

您的iterator是此函数调用中的临时变量。当您将其引用重新分配给另一个对象时,实际上并没有在此函数作用域之外修改链表。您应该使用以下

if(i++ == index) {
    iterator.next = new Node(value, iterator);
    return;
}

注意iterator.next而不是仅仅对迭代器重新赋值。这样,你就可以按自己的意愿修改链表,而不是仅仅修改一个局部变量,一旦函数调用结束,它就会超出作用域。

相关内容

  • 没有找到相关文章

最新更新