删除第一个出现的Doubly Linked List Java

问题描述 投票:-3回答:1

有人能告诉我我的代码中缺少什么。我试图删除给定节点值的第一次出现。

它失败了很少的测试用例,但我不确定我错过了什么。这是我的代码:

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;
}
java doubly-linked-list
1个回答
0
投票

if块中对remove()的递归调用看起来是错误的。

您已经在列表中,您确定了第一个匹配的对象。所以现在你的代码必须真正删除那个匹配的对象。删除意味着相应地更新两个链接。

把这些东西写在纸上!绘制带有节点的双链表以及它们之间的链接。然后问问自己,删除有一个或两个链接进入(并可能会出去)的节点实际意味着什么。您必须更改上一个节点和要删除的节点后面的链接!

© www.soinside.com 2019 - 2024. All rights reserved.