1.邻接矩阵的表示方法
用0和1表示
无向图:的邻接矩阵是对称的,图中的边的数目是矩阵中1的个数的一半。顶点i的度为第i行或第i列1的个数。第i行j列的值为1表示顶点i和顶点j之间有边相连
有向图:矩阵不一定对称,图中的有向边的数目是矩阵1的个数,顶点i的入度为第i列的1的个数,顶点i的出度为第i行1的个数。第i行j列的值为1表示顶点i和顶点j之间有边相连。
邻接矩阵的存储表示:
图的邻接矩阵的类型:
#define MaxSize 100 /*最大的顶点数*/typedef char VertexType; /*顶点的类型*/typedef int wType; /*边上的权重类型*/typedef struct{VertexType vexs[MaxSize]; /* 顶点表*/wType w[MaxSize][MaxSize]; /*邻接矩阵,可看做边表*/int vexnum,w;}AdjMatrix;
无向图邻接矩阵的算法:
void CreatGraph(AdjMatrix *G) /*建立无向图的邻接矩阵表示*/{ int i,j,k; scanf("%d%d",&G->vexnum,&G->wnum);/*输入顶点数和边数*/ getchar(); for(i=0;ivexnum;i++) for(j=0;j vexnum;j++) G->w[i][j]=0; /*邻接矩阵初始化*/ for(k=0;k wnum;k++) /*读入wnum条边*/ {scanf("%d%d",&i,&j); /*输入表示边(vi,vj)的顶点序号i,j*/ G->w[i][j]=1; G->w[j][i]=1; }}
。。。。。待续