这个插图有错误吗?
Is there a mistake in this illustration?
在 Cay Horstmann 的 "Big Java"(国际第 4 版)第 14.2 章第 620 页中,展示了如何实现链表。 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)" 之后,字段 "previous" 和 "position" 不应该指向同一个对象吗?上图是插入前,下图是插入后
在我看来,代码似乎是错误的,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;
}
}
这将符合第二张图片的预期结果
在 Cay Horstmann 的 "Big Java"(国际第 4 版)第 14.2 章第 620 页中,展示了如何实现链表。 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)" 之后,字段 "previous" 和 "position" 不应该指向同一个对象吗?上图是插入前,下图是插入后
在我看来,代码似乎是错误的,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;
}
}
这将符合第二张图片的预期结果