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;
View Code

无向图邻接矩阵的算法:

void CreatGraph(AdjMatrix *G) /*建立无向图的邻接矩阵表示*/
{
    int i,j,k;
    scanf("%d%d",&G->vexnum,&G->wnum);/*输入顶点数和边数*/
    getchar();
    for(i=0;i<G->vexnum;i++)
        for(j=0;j<G->vexnum;j++)
            G->w[i][j]=0; /*邻接矩阵初始化*/
        for(k=0;k<G->wnum;k++) /*读入wnum条边*/
        {scanf("%d%d",&i,&j); /*输入表示边(vi,vj)的顶点序号i,j*/
        G->w[i][j]=1;
        G->w[j][i]=1;
        }
}
View Code

。。。。。待续