如何在java中创建一个链表数组?

2022-09-03 04:13:30

因此,我需要像这样获取二分图的边缘输入:

6
1 3
1 2
1 5
2 7
2 4
2 9

第一个数字是边的数量。之后,将列出边缘。例如,看看顶点1如何具有多个不同的边缘,并且我想跟踪1连接到的内容,我在想图的每个顶点都会有某种顶点列表,这导致我尝试创建一个链表数组,但我不确定我会怎么做。我试过了

LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
    int temp = sc.nextInt();
    int temp2 = sc.nextInt();
    vertex[temp].add(temp2);
    i++;
}

但是我在添加行处得到一个空点异常。


答案 1
LinkedList<Integer>[] vertex = new LinkedList[5];
int i = 0, m = 6;
while(i!=m){
  int temp = sc.nextInt();
  int temp2 = sc.nextInt();

  // Make sure the list is initialized before adding to it
  if (vertex[temp] == null) {
     vertex[temp] = new LinkedList<Integer>();
  }

  vertex[temp].add(temp2);
  i++;
}

答案 2
//initialize array
LinkedList<Integer>[] vertex = new LinkedList[5];
//initialize array elements(objects of LinkedList)
for (int j=0; j<5; j++)
    vertex[i]=new LinkedList<Integer>();

int i = 0, m = 6;
while(i!=m){
    int temp = sc.nextInt();
    int temp2 = sc.nextInt();
    vertex[temp].add(temp2);
    i++;
}

通常,Java中不鼓励使用数组。或者,您可以使用以下命令:

//initialize array
List<LinkedList<Integer>> vertex = new ArrayList<LinkedList<Integer>>();
//initialize arraylist elements(objects of LinkedList)
for (int j=0; j<5; j++)
    vertex.add(new LinkedList<Integer>());

推荐