0

我正在尝试将 2D Linked List Array 作为:

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?

4

1 回答 1

8

你从来没有初始化adjLst,所以它仍然有它的默认值null. 你需要类似的东西:

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

请注意,目前尚不清楚为什么要从该值中减去 1 n,然后再上升并包含该值。我会发现这更容易理解:

// 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>();
    }
}
于 2013-07-29T22:32:13.067 回答