web-dev-qa-db-fra.com

Comment puis-je créer un tableau de listes liées en Java?

Je dois donc prendre en entrée les bords d'un graphe biparti comme celui-ci:

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

Le premier nombre est le nombre d'arêtes. Après cela, les bords sont répertoriés. Voyez comment, par exemple, le sommet 1 a plusieurs arêtes différentes et je veux garder une trace de ce à quoi 1 est connecté, je pensais que chaque sommet du graphique aurait une sorte de liste de sommets auxquels il est connecté, ce qui m'amène à essayer de créer un tableau de listes liées, mais je ne sais pas comment je ferais cela. j'ai essayé

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++;
}

Mais j'obtiens une nullpointerexception à la ligne d'ajout.

13
user2923535
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++;
}
22
Stefan Haustein
//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++;
}

Normalement, les tableaux ne sont pas encouragés en Java. Vous pouvez également utiliser ceci:

//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>());
4
run run chicken