我正在尝试使用Ddj List来表示图形的顶点和边缘,并通过DFS解决迷宫。总共有12个节点(3行[A,B,C] * 4 cols [0,..,3])。我的程序首先保存所有到目前为止的顶点标签(A0,.. C3),然后检查相邻的节点,也没有问题,如果可以移动,它将继续创建边,这里的边哪里出错了。
adjList[i].add(vList[j].label);
我使用了调试器,发现
vList[j].label
不为null,它包含正确的字符串(即“ B1”)。唯一显示空值的变量在adjList[i]
中,这使我相信我错误地实现了它。这就是我做到的。public class GraphList {
private ArrayList<String>[] adjList;
...
public GraphList(int vertexcount) {
adjList = (ArrayList<String>[]) new ArrayList[vertexCount];
...
}
...
public void addEdge(int i, int j) {
adjList[i].add(vList[j].label); //NULLPOINTEREXCEPTION HERE
}
...
}
如果有人能指出正确的方向,我将不胜感激...谢谢!
最佳答案
您已经创建了数组,但是仍然需要遍历并创建ArrayList
对象。在编写时,adjList[i]
返回null,因为尚未为其分配任何内容。