2013-11-02 157 views
0

我想遞歸追加鏈接列表的末尾。但是,似乎沒有添加任何東西。我使用私人助手方法,所以我可以使用參考作爲參數。我沒有遇到任何例外情況,但是,我的測試用例顯示沒有任何東西被添加到列表中!我不知道我做錯了什麼,也不知道從哪裏開始。非常感謝您的幫助。遞歸添加節點到鏈表末尾

public void addLast(E element) { 
    addLast(element,first); 
} 

private void addLast(E element, Node ref) { 
    if (ref == null) { 
     ref = new Node(element); 
     n++; 
      } else if (ref.next == null) { 
        ref.next = new Node(element); 
        n++; 
    } else { 
     addLast(element, ref.next); 
    } 
} 
+0

首先,什麼是n?你的問題是列表總是空的嗎?如果是,則嘗試將第一個if塊下的'ref = new Node(element)'更改爲first = new Node(element),其中'first'是您的列表頭指針。 – slider

+0

您能否發佈一個導致空的LinkedList的例子? – vandale

回答

0
private void addLast(Node node){ 

    while(root.next != null){ 
      root = root.next; 

      if (root.next == null){ 
       root.next = node; 
       break; 
      } 
    } 
} 

不是遞歸的,因爲你不需要它......

5

你必須做這樣的事情。 參考this link的解釋。

private Node addLast(E element, Node ref) { 
    if (ref == null) { 
     ref = new Node(element); 

    } else { 
     ref.next = addLast(element, ref.next); 
    } 
    return ref; 
}