Java / 实现链表
Java / Implementing LinkedList
我正在尝试通过嵌入 类 来实现链接列表,但我在向列表中插入元素时遇到了问题。
为什么我的解决方案不起作用?我可以使用 get() 通过这种方式 return 一个元素,但是一旦我的迭代器到达目的地,我就无法插入一个元素。
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
而不是仅仅重新分配迭代器。
通过这种方式,您将按照您的意愿修改链表,而不是仅仅修改函数调用结束后将超出范围的局部变量。
我正在尝试通过嵌入 类 来实现链接列表,但我在向列表中插入元素时遇到了问题。 为什么我的解决方案不起作用?我可以使用 get() 通过这种方式 return 一个元素,但是一旦我的迭代器到达目的地,我就无法插入一个元素。
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
而不是仅仅重新分配迭代器。
通过这种方式,您将按照您的意愿修改链表,而不是仅仅修改函数调用结束后将超出范围的局部变量。