图的存储结构
图没有顺序存储结构,但是可以借助二维数组来表示元素之间的关系,即邻接矩阵表示法。常见的链式存储有邻接表、十字链表和邻接多重表。
邻接矩阵
邻接矩阵表示法
邻接矩阵是表示顶点之间相邻关系的矩阵。
在一个邻接矩阵中,wi和wj表示边上的权的值。∞表示计算机允许的、大于所有边上的权值的数。
//--- 图的邻接矩阵存储表示
#define MaxInt 32767 //表示极大值,即∞
#define MVNum 100 //最大顶点数
typedef char VerTexType; //假设顶点的数据类型为字符类
typedef int ArcType; //假设的权值类型为整形
typedef struct
{
VerTexType vexs[MVNum]; //顶点表
ArcType arcs[MVNum][MVNum]; //邻接矩阵
int vexnum, arcnum; //图的当前点数和边数
}
采用邻接矩阵表示法创建无向网
「算法步骤」:
已知一个图的点和边,使用邻接矩阵表示法来创建此图的方法比较简单。
1⃣️ 输入总顶点数和总边数。
2⃣️ 依次输入点的信息存入顶点表中。
3⃣️ 初始化邻接矩阵,是每个权值初始化为极大值。
4⃣️ 构造邻接矩阵。依次输入每条边的顶点和其权值,确定两个顶点在图中的位置后,使相应的边赋予相应的权值,同时使其对称边赋予相同的权值。
「算法分析」:
该算法的时间复杂度是大欧的n次平方。
「优缺点」:
优