在第14.2页,第620页," Big Java" (国际第4版),由Cay Horstmann,它展示了如何实现链表。 listIterator的add方法如下所示:
public void add(Object element) {
if(position == null) {
addFirst(element);
position = first;
} else {
Node newNode = new Node();
newNode.data = element;
newNode.next = position.next;
position.next = newNode;
position = newNode;
}
previous = position;
}
相应的插图看起来像我在下面添加的插图。第一个是" newNode"已添加,第二个是后。有人能告诉我第二张照片中是否有错误。不应该是领域"之前"和"位置"在调用" add(Object element)"?之后指向同一个对象顶部图片位于之前,底部图片位于插入之后。
答案 0 :(得分:1)
我认为代码看似错误,previous
应该在实际更改之前设置为position
。
这样的事情:
public void add(Object element) {
previous = position;
if(position == null) {
addFirst(element);
position = first;
} else {
Node newNode = new Node();
newNode.data = element;
newNode.next = position.next;
position.next = newNode;
position = newNode;
}
}
这将符合第二张图片的预期结果