2012-04-17 43 views
1

我想實現鏈表的add方法,它應該採取任何數據類型,但我有點迷路,不工作,任何幫助將不勝感激。實現通用鏈表添加方法java

public class LinkedList <T>extends AbstractList { 

private class Node { 

    T data; 
    Node next; 

    Node(T data, Node next) { 
     this.data = data; 
     this.next = next; 
    } 

    Node(T data) { 
     this(data, null); 
    } 
} 
Node first; 
Node last; 

public LinkedList() { 
    first = null; 
    last = null; 
} 

@Override 
public boolean add(T item) { 

    Node newNode = new Node((T)item); 

    if (isEmpty()) { 
     first = newNode; 
     last = first; 
     return true; 
    } 

    last.next = newNode; 
    last = null; 
    return true; 
} 

}

+2

東西無法正常工作?問題是什麼? – talnicolas 2012-04-17 15:55:58

+0

'last = null;'看起來不正確。 'last = newNode;'也許? 另外,你也應該通過節點 – 2012-04-17 15:57:59

+0

'last = newNode'和'last.next = null' – noMAD 2012-04-17 16:02:46

回答

1

你不告訴我們您的具體問題,所以我們不能修復,只能猜測。

一個問題我看到的是,雖然您延長AbstractList作爲原料(非泛型)類型 - 你的聲明應該是代替

public class LinkedList<T> extends AbstractList<T> { ... } 
0

您需要:

last.next = newNode; 
last = newNode; 

要小心,你明白爲什麼。

在添加新節點之前,last是對列表中最後一個條目的引用。

你想要做的是它的next參考點這個新節點。

第二行然後更新last來引用這個新的。