我试图通过嵌入类来实现链表,但我有将元素插入列表的问题。为什么我的解决方案不起作用?我可以用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
而不是仅仅对迭代器重新赋值。这样,你就可以按自己的意愿修改链表,而不是仅仅修改一个局部变量,一旦函数调用结束,它就会超出作用域。