C++实现无向图的创建与邻接矩阵输出

5星 · 超过95%的资源 需积分: 40 86 下载量 17 浏览量 更新于2024-09-19 7 收藏 3KB TXT 举报
本资源主要介绍了如何在C++编程中构建无向图并使用邻接矩阵进行储存和输出的过程。无向图是一种图论中的数据结构,它不区分边的方向,即任意两个顶点之间的连接关系是双向的。邻接矩阵是一种常用的表示图的方式,它是一个二维数组,其中每个元素表示两个顶点之间是否存在边。 首先,定义了一个名为`Mgraph`的结构体,它包含以下几个部分: 1. `vexs`:一个字符数组,用于存储图中的顶点信息。 2. `arcs`:一个二维整型数组,表示邻接矩阵,其中`arcs[i][j]`表示顶点i与顶点j之间是否存在边,由于是无向图,所以`arcs[i][j]`和`arcs[j][i]`都用来表示连接。 3. `vnum`:表示顶点的数量。 4. `anum`:表示边的数量。 接下来有两个重要的函数: 1. ` Creatno(Mgraph* G)`:这个函数用于创建无向图。首先,用户输入顶点数量`vnum`和边的数量`anum`。然后,依次获取每个顶点的信息,并检查是否重复,避免自环。接着,初始化邻接矩阵的所有元素为0,表示没有边。用户接着输入每条边的两个端点,将对应的邻接矩阵元素设置为1,同时考虑到无向图,对对角线上的元素也进行同样的设置。 2. `Output(Mgraph* G)`:此函数用于输出已创建的无向图的邻接矩阵。通过遍历`vnum`个顶点以及它们之间的`vnum`个可能连接,打印出`arcs`数组中的值,如果连接存在,就输出1,否则为空格。 整个过程强调了无向图的特性,并展示了如何通过邻接矩阵有效地表示和操作图。这对于理解和实现图形算法,如最短路径、连通性分析等具有重要意义。在实际编程中,理解并熟练运用这些概念有助于处理更复杂的数据结构和算法问题。