簡體   English   中英

返回一個新的鏈表(定制的)

[英]Returning a new LinkedList (custom built)

我試圖在過濾后返回一個的數字linkedList 我在這里修改了它就地調用的原始列表,然后原始列表上的toString()失敗。 如何在不干擾調用此方法的原始列表的情況下返回新列表?

public CustomLinkedList filterEvenInts() {
    Node current = data; 
    
    // note: returned list should have values in the order they appeared in the original list.
    
    if (current == null) {
        return new CustomLinkedList();
    }

    Node prev = current;
    while (prev.next != null) {
        if (prev.next.value % 2 != 0) {
            prev.next = prev.next.next;
        } else {
            prev = prev.next;
        }
    }

    // delete current if odd too
    if (current.next.value % 2 != 0) {
        current = current.next;
        prev = current;
    }

    CustomLinkedList newList = new CustomLinkedList();
    newList.data = prev;
    
    return newList;
    
}

據我了解,您可能必須先以某種方式復制列表。 僅僅創建一個新的並將新的數據設置為舊的是行不通的,因為您仍然引用相同的 object。一種方法是通過舊列表的每個節點到 go,創建一個新的從舊節點的值中提取節點並將新節點添加到新列表中。 編輯新列表不會影響舊列表。

暫無
暫無

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

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