Java /实现LinkedList

时间:2015-10-17 19:00:43

标签: java reference insert linked-list

我正在尝试通过嵌入类来实现链接列表,但是我在将一个元素插入列表时遇到了问题。 为什么我的解决方案不起作用?我可以使用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;

        }   

    }       

}

1 个答案:

答案 0 :(得分:0)

您的iterator是此函数调用中的临时变量。当您将其引用重新分配给另一个对象时,实际上并未修改此函数范围之外的Linked-List。您应该使用以下

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

注意iterator.next而不是仅重新分配迭代器。 这样你就可以按照意图修改Linked-List,而不是仅仅修改一个函数调用结束后将超出范围的局部变量。