初学者询问数据结构实验报告题!

一个函数print_graph,该函数的功能是输出图G所对应的邻接矩阵,要求以二维数组形式输出邻接矩阵各元素的值,请将函数体补充完整。
void print_graph(MGraph G)
{

}


struct MGraph {
    int vexnum;          // 图的顶点数
    int arcnum;          // 图的边数
    std::string* vexs;   // 存储顶点信息的数组
    int** arcs;          // 存储邻接矩阵的二维数组
};

void print_graph(MGraph G)
{
    int n = G.vexnum;
    int e = G.arcnum;
    int** A = G.arcs;
    
    // 输出邻接矩阵的行列数
    std::cout << "Adjacency Matrix of the graph:\n";
    std::cout << "  ";
    for(int i = 0; i < n; ++i) {
        std::cout << G.vexs[i] << " ";
    }
    std::cout << std::endl;

    // 输出邻接矩阵
    for(int i = 0; i < n; ++i) {
        std::cout << G.vexs[i] << " ";
        for(int j = 0; j < n; ++j) {
            std::cout << A[i][j] << " ";
        }
        std::cout << std::endl;
    }
}
  • 这篇博客: 2. 图的具体实现中的 print_graph(*G) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • void print_graph(adjMatrix * G){
        for (int i = 0; i < G->n; i++, putchar(10) )  
        // putchar(10)是换行,每行换一次行
            for (int j = 0; j < G->n; j++)
                printf("%d ",G->matrix[i][j]);
        putchar(10);
    }
    

    运行后的大概模样,仅供参考

    结合顶点表输出信息:

     void print_graph(adjMatrix * G)
     {
     	int i, j;
     	printf("   ");
     	for( i = 0; i < G->n; i++ )
     	    printf("%c  ", G->list[i]);
     	    
     	putchar(10);
     	
         for( i=0; i<G->n; i++, putchar(10)){
         	printf("%c  ", G->list[i]);
             for(j=0; j<G->n; j++)
                 printf("%d  ", G->matrix[i][j]);
         }
         putchar(10);
     }
    

    运行后的大概模样,仅供参考: