Dus ik moet de randen van een tweedelige grafiek als volgt invoeren:
6
1 3
1 2
1 5
2 7
2 4
2 9
Het eerste getal is het aantal randen. Daarna worden de randen vermeld. Zie hoe bijvoorbeeld vertex 1 meerdere verschillende randen heeft en ik wil bijhouden waar 1 mee verbonden is. maak een reeks gelinkte lijsten, maar ik weet niet zeker hoe ik dat zou doen. Ik heb geprobeerd
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++;
}
Maar ik krijg een nullpointerexception op de add-regel.
Antwoord 1, autoriteit 100%
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++;
}
Antwoord 2, autoriteit 21%
//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++;
}
Normaal gesproken worden arrays niet aangemoedigd in Java. Als alternatief kunt u dit gebruiken:
//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>());