使用邻接矩阵实现无向图的存储与遍历

需积分: 50 27 下载量 101 浏览量 更新于2024-09-08 收藏 3KB TXT 举报
"邻接矩阵用于表示无向图,无向图中的边是双向连接的,邻接矩阵是一个二维数组,用于存储图中顶点之间的邻接关系。程序实现了创建、输出邻接矩阵以及对无向图进行广度优先遍历和深度优先遍历的功能。" 在计算机科学中,图是一种数据结构,用于表示对象之间的关系。无向图是其中一种类型,它的边没有方向性,即如果A与B之间有一条边,那么B也可以到达A。邻接矩阵是表示无向图的一种常见方法,它是一个二维数组,大小为n×n,其中n是图中顶点的数量。在这个矩阵中,行和列对应图中的顶点,如果顶点i和顶点j之间有边相连,那么邻接矩阵的元素`edges[i][j]`和`edges[j][i]`都设置为1,否则为0。 在提供的代码中,`MatrixGraph`结构体定义了一个无向图的数据结构,包含以下字段: - `vexs[MAX]`:存储图中顶点名称的字符数组。 - `edges[MAX][MAX]`:邻接矩阵,用于存储图中顶点之间的连接关系。 - `n`:图中顶点的数量。 - `e`:图中边的数量。 - `visited[MAX]`:一个布尔数组,用于标记顶点是否已被访问过,在遍历图时非常有用。 `Creat`函数用于创建无向图。首先,它接收用户输入的顶点数和边数,然后读取每个顶点的名称。接着,初始化邻接矩阵为0,表示所有顶点之间默认没有边。最后,用户输入边的信息(两个端点的索引),并将对应位置的邻接矩阵元素设为1,因为无向图的边是双向的,所以需要同时更新`edges[i][j]`和`edges[j][i]`。 `Outputmatrix`函数用于输出邻接矩阵,方便查看图的结构。 `inittravel`函数初始化`visited`数组,将所有顶点的访问状态设为未访问,这是遍历算法的准备工作。 `firstadj`函数查找给定顶点的第一个邻接顶点,即第一个与之有边相连的顶点。如果找不到,返回-1。 `nextadj`函数用于在遍历过程中找到当前顶点的下一个邻接顶点,它从当前邻接顶点的下一个位置开始查找,直到找到下一个与之相连的顶点或遍历完整个矩阵。 这些函数为实现无向图的遍历算法(如广度优先遍历和深度优先遍历)提供了基础。在实际应用中,可以基于这些函数扩展实现图的其他操作,如寻找最短路径、判断连通性等。