Как создать матрицу смежности с использованием итеративного списка? - PullRequest
0 голосов
/ 25 апреля 2019

Я работаю в лаборатории для печати списка смежности и матрицы смежности на основе заданных входных данных.Я успешно создал и распечатал список смежности, но я борюсь с матрицей.Это мой первый опыт работы с матрицей смежности, и у меня не было большого опыта работы с матрицами в целом.

Метод, над которым я работаю, это «generateMatrix (Graph graph)», и, как вы можете видеть, я создал матрицу правильного размера и попытался реализовать список в качестве итератора.Я считаю, что отсюда мне нужно обновить Матрицу с помощью этого итератора (если я создал итератор неправильно, дайте мне знать).

Там, где я застрял, проходит и обновление Матрицы с помощью этого итератора списка.Я не совсем уверен, куда идти отсюда, чтобы выполнить эту Матрицу.Я добавил «Хотя итератор имеет следующий», потому что я думаю, что это то, куда я направляюсь, но не могу придумать, как на самом деле это сделать.Можете ли вы предложить помощь?

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"); 
        }

Ожидаемый результат - это индекс размера [graph.Nodes] [graph.Nodes], который печатает 0 и 1 в нужных местах на основе ввода.Мой вывод в настоящее время просто печатает пустой индекс, так как я еще не обновил ни одного сегмента.

...