我正在尝试使用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,因为尚未为其分配任何内容。

09-05 06:25