图遍历的过程其实很容易理解(很多方法即使不看书也能比划出来),难点是思路清晰的用计算机理解的方式表达出来。
矩阵是一种表示图的信息很好的方法(顶点比较少时适用),每个顶点与其它顶点的关联都可以表示出来。
矩阵每行代表每个顶点可以访问的其它顶点(列可以想象成某顶点可以被哪些其它顶点访问)。
矩阵是一种表示图的信息很好的方法(顶点比较少时适用),每个顶点与其它顶点的关联都可以表示出来。
矩阵每行代表每个顶点可以访问的其它顶点(列可以想象成某顶点可以被哪些其它顶点访问)。
直接看代码与注释:
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <queue>
using namespace std;
#define DONE 1 //visitedV
#define UNDONE 0
#define VERTEXNUM 6 //顶点个数
bool visitedV[VERTEXNUM];
//邻接矩阵存储结构
typedef struct
{
char vertexs[VERTEXNUM]; //顶点
int edges[VERTEXNUM][VERTEXNUM]; //邻接矩阵
int verNum, edgeNum; //图中顶点和边数
}Graph;
//建立邻接矩阵
void MakeGraph(Graph *graph)
{
int i, j, k;
/*
//自定义输入顶点数和边数
printf("请输入顶点数和边数:\n");
scanf("%d%d", &graph->verNum, &graph->edgeNum);
*/
graph->verNum = 6;
graph->edgeNum = 6;
//char my_vertexs[6] = {'a','b','c','d','e','f'