2017-10-22 15 views
1

私はjavaを使って無向グラフのパスを探しています。私はおそらく正しい軌道に乗っているような気がしますが、それを得るのにはかなり近いですが、私は道路ブロックに走り続けていると言ってエラーを発しています。私はリンクリストを使ってエッジと頂点を保存しています。リンクされたリストジェネリック配列の作成エラーundirected graph Java

private LinkedList<Integer> adj; 

初期化:

adj = new LinkedList<Integer>(); 

をこのリストにあなたを要素を配置するには

Graph2.java:17: error: generic array creation adj = new LinkedList[v];

ここに私のコードは、この変数を宣言するのが正しい方法です

import java.io.*; 
import java.util.*; 
import java.util.LinkedList; 
import java.util.Scanner; 

// This class represents a directed graph using adjacency list 
// representation 
class Graph2 
{ 
    private int V; // No. of vertices 
    private LinkedList<Integer> adj[]; //Adjacency List 

    //Constructor 
    Graph2(int v) 
    { 
     V = v; 
     adj = new LinkedList<Integer>[v]; 
     for (int i=0; i<v; ++i) 
      adj[i] = new LinkedList<Integer>(); 
    } 

    //Function to add an edge into the graph 
    void addEdge(int v,int w) { adj[v].add(w); } 

    //prints BFS traversal from a given source s 
    Boolean isReachable(int s, int d) 
    { 
     LinkedList<Integer>temp; 

     // Mark all the vertices as not visited(By default set 
     // as false) 
     boolean visited[] = new boolean[V]; 

     // Create a queue for BFS 
     LinkedList<Integer> queue = new LinkedList<Integer>(); 

     // Mark the current node as visited and enqueue it 
     visited[s]=true; 
     queue.add(s); 

     // 'i' will be used to get all adjacent vertices of a vertex 
     Iterator<Integer> i; 
     while (queue.size()!=0) 
     { 
      // Dequeue a vertex from queue and print it 
      s = queue.poll(); 

      int n; 
      i = adj[s].listIterator(); 

      // Get all adjacent vertices of the dequeued vertex s 
      // If a adjacent has not been visited, then mark it 
      // visited and enqueue it 
      while (i.hasNext()) 
      { 
       n = i.next(); 
       System.out.println(n); 
       // If this adjacent node is the destination node, 
       // then return true 
       if (n==d) 
        return true; 

       // Else, continue to do BFS 
       if (!visited[n]) 
       { 
        visited[n] = true; 
        queue.add(n); 
       } 
      } 
     } 

     // If BFS is complete without visited d 
     return false; 
    } 

    // Driver method 
    public static void main(String args[]) 
    { 
     // Create a graph given in the above diagram 
     Graph g = new Graph(9999999); 
     try{ 
     File file = new File("Graph.txt"); 
     Scanner scan = new Scanner(file); 
     while(scan.hasNextLine()) 
     { 
      String [] tempArray = scan.nextLine().split(","); 
      g.addEdge(Integer.parseInt(tempArray[0]), Integer.parseInt(tempArray[1])); 
     } 
     scan.close(); 
    } 
    catch(FileNotFoundException fs) 
    { 

    } 

     int u = 1; 
     int v = 891950; 
     if (g.isReachable(u, v)) 
      System.out.println("There is a path from " + u +" to " + v); 
     else 
      System.out.println("There is no path from " + u +" to " + v);; 
    } 
} 

答えて

1

です使用することができます:

adj.add(index, element); 

要素はLinkedListオブジェクトですが、宣言時にはジェネリック型をLinkedListに変更する必要があります。
JavaのLinkedListについて詳しくはdocsをご覧ください。

関連する問題