Java/实现链表

标签 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;

        }   

    }       

}

最佳答案

您的迭代器是此函数调用中的临时变量。当您将其引用重新分配给另一个对象时,您实际上并没有修改此函数范围之外的链接列表。您应该使用以下内容

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

请注意 iterator.next 而不是仅仅重新分配迭代器。 这样,您将按照您的意愿修改链接列表,而不是仅仅修改函数调用结束后将超出范围的局部变量。

关于Java/实现链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190449/

相关文章:

Python 有条件地将键添加到字典中

java - Web 应用程序和独立 Java 应用程序的不同依赖范围

c++ - 为什么此类中的复制构造函数、operator= 和引用存在编译问题

mysql - 向表中插入非重复数据

c - **在C语言中是什么意思?

html - Firebug 中的网络选项卡不显示任何文件

insert - MyBatis 插入一对多关系

java - 在 Eclipse RAP 中如何将当前 UI 状态推送/强制到客户端?

java - 重置从文件加载的 Java AudioInputStream

java - 如何在多线程中处理n个请求