我正在研究一个实验室,根据给定的输入打印邻接表和邻接矩阵。我已经成功创建并打印了邻接表,但是我在矩阵上苦苦挣扎。这是我第一次接触邻接矩阵,而我一般对矩阵没有太多经验。
我正在使用的方法是“ 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。我的输出当前只显示一个空索引,因为我还没有更新任何存储桶。