user2923535
user2923535

Reputation: 594

How can I create an array of linked lists in java?

So I need to take in input of edges of a bipartite graph like this:

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

The first number is the number of edges. After that edges are listed. See how for example vertex 1 has multiple different edges and I want to keep track of what 1 is connected to, I was thinking that each vertex of the graph would have some sort of list of vertices it is connected to which leads me to try to create an array of linked lists but I'm not sure how I would do that. I tried

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

But I get a nullpointerexception at the add line.

Upvotes: 19

Views: 122646

Answers (2)

run run chicken
run run chicken

Reputation: 503

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

Normally Arrays are not encouraged in Java. Alternatively you can use this:

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

Upvotes: 8

Stefan Haustein
Stefan Haustein

Reputation: 18793

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

Upvotes: 32

Related Questions