2013-07-29 47 views
-1

我想有2D鏈表數組爲:二維鏈表數組

private LinkedList<Integer>[] adjLst; 

graph(int n){ 
    noOfNodes = n-1; 

    for(int i=0;i<=noOfNodes;i++){ 
     adjLst[i] = new LinkedList<Integer>(); 
    } 
} 

但是,當我從我的主類調用它爲:

graph g =new graph(13); 

它拋出一個NullPointerException異常?

回答

8

你從未初始化過adjLst,所以它的默認值仍然是null。你需要的東西,如:

adjLst = new LinkedList<Integer>[noOfNodes + 1]; 
for (int i = 0; i <= noOfNodes; i++) { 
    adjLst[i] = new LinkedList<Integer>(); 
} 

爲什麼你從n減去1,然後上升和包括該值,你要知道目前尚不清楚。我會發現這更容易理解:

// Note: fixed case of class. Please follow Java naming conventions 
Graph(int n){ 
    adjLst = new LinkedList<Integer>[n]; 
    for (int i = 0; i < n; i++) { 
     adjLst[i] = new LinkedList<Integer>(); 
    } 
}