码迷,mamicode.com
首页 > 其他好文 > 详细

图的存储结构

时间:2015-03-21 22:49:43      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

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

。。。。。待续

 

图的存储结构

标签:

原文地址:http://www.cnblogs.com/lqs-zsjky/p/4356250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!