2016-04-20 89 views
0

所以我正在學習處理鏈表。我將如何遞增地添加節點內的節點。我可以通過做sum = h.item +h.next.item+h.next.next.item來添加它們,但只有當我有小鏈表時才能使用。下面是我嘗試失敗的函數addAll。以遞歸方式添加節點項目。鏈接列表

public class nodeP { 

    public static void main(String[] args) { 
     node H = new node(9); 
     H.next = new node(7); 
     H.next.next = new node(5); 

     System.out.println(addAll(H)); 
    } 

    static int addAll(node h) { 
    int sum = 0; 
    if(h.next!=null) { 
    sum += h.item + addAll(h.next); 
} 
    return sum; 
    } 
} 
+1

請注意,如果你有很多的數字,你應該考慮使用while循環代替,以避免過多的遞歸調用。 –

回答

2

看起來你的代碼不會添加最後一個節點。即使h.nextnull,您也必須添加h.item

嘗試:

static int addAll(node h) { 
    int sum = h.item; 
    if (h.next != null) { 
     sum += addAll(h.next); 
    } 
    return sum; 
}