图的存储结构
一、图的邻接矩阵表示
1. 图的邻接矩阵存储类型
1)基本思想:
-一维数组vexs[ ]:存储图中顶点信息;
-二维数组arcs[ ][ ]:存储图中各顶点间关系(1,有关系;0,没关系);
-整型变量vexNum:存储顶点数;
-整形变量arcNum:存储边(弧)数。
2)图的邻接矩阵定义:
#include <stdio.h>
#define MAXSIZE 20 //图中顶点的最大数目
#define INFINITY 9999 //表示无穷大
typedef struct {
VertexType vexs[MAXSIZE]; //存储顶点信息(VertexType为顶点的数据类型)
int arcs[MAXSIZE][MAXSIZE]; //存储顶点的关系
int arcNum, vexNum; //存储顶点数、弧数
}MGraph; //定义图的类型
2. 图的邻接矩阵生成算法
图的邻接矩阵生成算法主要步骤:
(1)输入图的顶点个数和边的个数;
(2)输入顶点信息存储在一维数组vexs[ ]中;
(3)初始化邻接矩阵(对角线为0,其余为 ∞ );
(4)依次输入每条边存储在arcs中。
void creatGraph(MGraph &G) {
int i, j, from, to;
for(i=0; i<MAXSIZE; i++) {
//初始化邻接矩阵
for(j=0; j<MAXSIZE; j++) {
if(i == j) {
G.arcs[i][j] =