簡體   English   中英

刪除第一次出現的雙鏈表Java

[英]Delete first occurance Doubly Linked List Java

有人能告訴我我的代碼中缺少什么嗎? 我正在嘗試刪除給定節點值的第一次出現。

它在很少的測試用例中失敗了,但我不確定我錯過了什么。 這是我的代碼:

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 塊中遞歸調用 remove() 看起來是錯誤的。

您已經在列表中,您確定了第一個匹配對象。 所以現在你的代碼必須真正刪除那個匹配的對象。 刪除意味着相應地更新兩個鏈接。

在紙上做這些事情! 用節點和節點之間的鏈接繪制一個雙向鏈表。 然后問問自己,刪除一個有一個或兩個鏈接進來(並可能出去)的節點實際上意味着什么。 您必須更改前一個節點的鏈接以及要刪除的節點后面的鏈接!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM