图的创建和邻接矩阵表示法

2. 定义结构体
定义一个结构体变量,结构体中有一个一维数组,对应的是所有节点,还有一个二维数组,对应着上图的关系表
对结构体取别名,方便后续程序编写
由于在本程序案例中设想的应用场景是城市、地名之间的图,所以一维数组的数据类型是字符串类型(char *),是一位字符串数组,数组中的每个成员都是指针变量
3. 创建一张图
定义一个结构体指针变量,用malloc在堆区开辟空间,注意需要进行数据类型的转换
for循环为字符串数组中的每个指针变量成员用malloc开辟空间,注意需要进行数据类型的转换
给每个字符串变量成员赋值
用两层for循环给二维数组关系表初始化为0
返回表的地址
4. 输入关系
定义两个整型变量用来记录输入的两个节点的编号
当输入了两个编号,getchar()吸收回车,二维数组关系表交叉的地方置1
5.输出关系
打印表的行头
两层循环,打印每一行和每一列
反复调试,输出如下格式的二维数组关系表

6.深度优先搜索
首先定义一个全局的数组变量,用于标记每一个顶点是否被访问过,值为0表示没有,为1表示已经访问过了
先打印节点编号和节点数据域存放的信息
将记录顶点是否被访问过的数组变量中对应节点编号的数组成员置1,表示被访问过
再遍历判断是否是邻接点并且没有访问过
递归调用当前函数继续找满足条件的i的邻接点,依次类推