有人可以告诉我代码中缺少什么。我正在尝试删除给定节点值的第一次出现。
它很少通过测试用例,但是我不确定我缺少什么。这是我的代码:
public boolean remove(E obj) {
if (obj == null)
throw new IllegalArgumentException("Violation of precondition : remove(E obj)");
DoubleListNode<E> current = head;
for (int i = 0; i < size; i ++) {
if (current.getData().equals(obj)) {
E result = remove(i);
return true;
}
current = current.getNext();
}
size --;
return false;
}
答案 0 :(得分:0)
在if块中对remove()的递归调用看起来是错误的。
您已经在列表中,已标识第一个匹配的对象。因此,现在您的代码必须真正删除该匹配对象。删除将意味着相应地更新两个链接。
在纸上做这些事情!绘制一个带有节点及其之间链接的双链表。然后问问自己,删除具有一个或两个链接(可能会出去)的节点的实际含义是什么。您将必须更改来自上一个节点的链接以及要删除的节点之后的链接!