删除首次出现的双链表Java
有人能告诉我我的代码缺少什么吗。我试图删除给定节点值的第一个匹配项 很少有测试用例失败,但我不确定我遗漏了什么。这是我的密码:删除首次出现的双链表Java,java,doubly-linked-list,Java,Doubly Linked List,有人能告诉我我的代码缺少什么吗。我试图删除给定节点值的第一个匹配项 很少有测试用例失败,但我不确定我遗漏了什么。这是我的密码: public boolean remove(E obj) { if (obj == null) throw new IllegalArgumentException("Violation of precondition : remove(E obj)"); DoubleListNode<E> current = head;
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;
}
在if块内部进行的递归调用看起来是错误的 您已经在列表中,您识别了第一个匹配对象。因此,现在您的代码必须真正删除匹配的对象。删除意味着相应地更新两个链接
把这些写在纸上!绘制包含节点及其之间链接的双链接列表。然后问问自己,删除一个有一个或两个链接进入并可能退出的节点实际上意味着什么。您必须更改上一个节点和要删除的节点后面的链接 它失败测试用例并不是对错误的非常具体的描述。您需要花时间调试您的问题,并确定哪些不起作用。如果你到了一个地方,你看到a发生在一个特定的地方,但你认为它应该是B,那么这对这个网站来说可能是一个好问题,如果它还没有在另一个问题中被问到的话。我明白这很难,我真的。。。但这是你任务的一部分,更重要的是,这是编程的关键部分。调试只会随着程序变得越来越复杂而变得越来越困难,因此您最好现在就开始调试。请将您的问题包括完整的源代码,这些代码可以由其他人编译和测试,以显示您遇到的错误。