删除首次出现的双向链接列表Java

时间:2019-03-16 01:35:41

标签: 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;
    for (int i = 0; i < size; i ++) {
        if (current.getData().equals(obj)) {
            E result = remove(i);
            return true;
        }
        current = current.getNext();
    }
    size --;
    return false;
}

1 个答案:

答案 0 :(得分:0)

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

您已经在列表中,已标识第一个匹配的对象。因此,现在您的代码必须真正删除该匹配对象。删除将意味着相应地更新两个链接。

在纸上做这些事情!绘制一个带有节点及其之间链接的双链表。然后问问自己,删除具有一个或两个链接(可能会出去)的节点的实际含义是什么。您将必须更改来自上一个节点的链接以及要删除的节点之后的链接!