PS:图在数据结构中有着非常大的分量,它比树有着更为复杂的形式结构,这里就不再说图的基本概念,直接就说图的存储结构,邻接矩阵和邻接表。图是有方向的,有方向的叫做弧,无方向的叫做边。存储图中各顶点本身数据,使用一维数组就足够了;存储顶点之间的关系时,要记录每个顶点和其它所有顶点之间的关系,所以需要使用二维数组。图在大多行业中的使用也是很多的,比如说游戏中两个人物的寻址,自动寻路,就是图与图直接经过计算然后移动。后序还会介绍Dijkstra(迪杰斯特拉)算法计算最短路径问题。
下面介绍邻接矩阵原理:
下面可以看到顶点之间有一定的联系,如果想要把他们存放在计算机中怎么存入呢,首先我们想到的是把顶点存在一维数组中,那么他们的关系存在在二维数组中,就好像是如下格式,A->B 权值是10,B->E 权值30。(下方1为有关系,0为没有关系,未加入权值)
思路
首先把要知道顶点和边数,然后单独把顶点存在一维数组中,根据边来确定两个顶点之间的联系,比如说第一条边,是A->B。归根结底也是通过数组来存储。当然这是邻接矩阵。
步骤
定义结构体
输入顶点和边数
通过顶点和边数初始化数据(内部全是0或者是无穷)
打印表
遍历(深度和广度优先遍历)
1:结构体定义
typedef char VertexType;
<