2017-08-26 22 views
0

這是基於我的這個線程,並且代碼相同:Avoid creating more than one edge between vertices (java.util, linkedList, Graph)。我認爲我不瞭解鏈接列表的重要內容,即:我不知道如何訪問由代碼生成的多個鏈表的特定列表中的數組和項目。訪問圖中的每個鏈表(java.util)

在Graph類有這一段代碼:

List<Edge> G[]; 
    public Graph(int n){ 
     G=new LinkedList[n]; 
     for(int i=0;i<G.length;i++) 
      G[i]=new LinkedList<Edge>(); 
    } 

    void addEdge(int u,int v){ 
     G[u].add(0,new Edge(v)); 
    } 

而在主類,我可以做:

Graph g; 
g = new Graph(k); 

作爲g是一個曲線圖,曲線圖是一個鏈接列表數組,我認爲使用g [i]訪問每個鏈表是有意義的。但這是我錯誤的猜測原因嘗試:

System.out.println(g[1]); 

將引發錯誤。那麼,我可以訪問每個鏈表嗎?這將有所幫助,以便我可以使用contains方法(對鏈接列表有效)來驗證該列表中是否存在特定的元素。

回答

1

gGraph類型的對象,它不是數組,因此不能訪問索引 - 因爲它沒有索引。

Graph的所有實例g確實有一個字段:List<Edge> G[],但不應該直接訪問它(否則它會破壞封裝)。