如何使用迭代列表创建邻接矩阵?

时间:2019-04-25 00:00:02

标签: java adjacency-matrix adjacency-list listiterator

我正在研究一个实验室,根据给定的输入打印邻接表和邻接矩阵。我已经成功创建并打印了邻接表,但是我在矩阵上苦苦挣扎。这是我第一次接触邻接矩阵,而我一般对矩阵没有太多经验。

我正在使用的方法是“ generateMatrix(Graph graph)”,如您所见,我创建了正确大小的矩阵,并且尝试将列表实现为迭代器。我相信从这里我需要使用此迭代器更新Matrix(如果我创建的迭代器错误,请告诉我)。

我遇到的问题是使用此列表迭代器来检查和更新Matrix。我不太确定从哪里可以完成此矩阵。我放入“ While iterator is next”,因为我认为这就是我要去的地方,但无法想到实际执行此操作的正确方法。您可以提供协助吗?

public Graph(int n){
        this.Nodes = n;
        adjVertices = new LinkedList[Nodes];
        adjMatrix = new int[Nodes][Nodes];

        for(int i = 0; i < Nodes; i++){
            adjVertices[i] = new LinkedList<Integer>();
        }
    }
}



// Add an edge between two given vertices
static void addEdge(Graph graph, int src, int dst){
    graph.adjVertices[src].push(dst); 
    graph.adjVertices[dst].push(src);



}

// Create the adjacency matrix representation
------------------------------- 
static void generateMatrix(Graph graph){


    graph.adjMatrix = new int[graph.Nodes] [graph.Nodes];
    ListIterator<Integer> listIterator = graph.adjVertices  
 [graph.adjVertices.length - 1].listIterator();

    while(listIterator.hasNext()) {

    }

}
--------------------------------------
// print the adjacency matrix

static void printMatrix(Graph graph){
    // Implement this method
    for (int i = 0; i < graph.Nodes; i++) {
        for (int j = 0; j < graph.Nodes; j++) {
            System.out.print(graph.adjMatrix[i][j] + " ");
        }
        System.out.println();
    }
}

// Print the graph as adjacency list
static void printGraph(Graph graph){
    // Implement this method
      for(int v = 0; v < graph.Nodes; v++) 
        { 
            System.out.println("Adjacency list of vertex "+ v); 
            System.out.print("head"); 
            for(Integer Print: graph.adjVertices[v]){ 
                System.out.print(" -> "+Print); 
            } 
            System.out.println("\n"); 
        }

预期结果是size [graph.Nodes] [graph.Nodes]的索引,该索引根据输入在适当的位置打印0和1。我的输出当前只显示一个空索引,因为我还没有更新任何存储桶。

0 个答案:

没有答案