【数据结构】图邻接矩阵的创建完整代码

您所在的位置:网站首页 邻接矩阵实现无向图buildgraph函数 【数据结构】图邻接矩阵的创建完整代码

【数据结构】图邻接矩阵的创建完整代码

2023-08-20 09:44| 来源: 网络整理| 查看: 265

无向图邻接矩阵的创建代码实现 完整代码如下程序结果

根据图的定义,邻接矩阵的存储需要对顶点和边分别存储。而图的邻接矩阵表示法是一个用一维数组存储顶点信息,用二维数组存储边(弧)的信息。实现这个算法首先要创建无向图,对图进行初始化操作,其次设置三个函数,分别为打印邻接矩阵,判断是否为对称矩阵和打印顶点的出度和入度。具体实现如下所示。

完整代码如下 #include #include #define maxnumber 6//顶点数目最大值 typedef struct { char vexs[maxnumber];//顶点表 int edges[maxnumber][maxnumber];//邻接矩阵,边表 int n,e;//图的顶点数和弧数 }MGraph; //创建无向图 void CreateMGraph(MGraph *G) { int i,j,k,max=0; printf("请输入顶点数和边数(格式:顶点数,边数):\n"); scanf("%d,%d",&(G->n),&(G->e)); //图的初始化 for(i=0;in;i++) { printf("请输入第%d个顶点的信息:",i+1); scanf("\n%c",&(G->vexs[i])); } printf("\n"); for(i=0;in;i++) { for(j=0;jn;j++) G->edges[i][j]=0; } printf("请输入每条边对应的两个顶点的序号(格式为:i,j):\n"); printf("\n"); //顶点信息存入顶点表 for(k=0;ke;k++) { printf("请输入第%d个顶点和边的信息:",k+1); scanf("%d,%d",&i,&j); G->edges[i][j]=1; } } //打印邻接矩阵 void print_Matrix(MGraph G) { int i,j; printf("\n输出的邻接矩阵为:\n"); printf("\n"); for(i=0;i printf("%d ",G.edges[i][j]); if(j==(G.n-1)) printf("\n"); //输出结束 } } } //判断是否为对称矩阵 void check_Matrix(MGraph G) { int i,j,a; for(i=0;i a=0; break; } } if(a==1) printf("矩阵是为对称矩阵\n"); else printf("矩阵不是为对称矩阵\n"); } //输出顶点的出入度 void output_Matrix(MGraph G) { int i,j,cnt,max1,max2,max=0; for(i=0,cnt=0;i if(G.edges[i][j]==1) cnt++; if(j==(G.n-1)) printf("%8d的出度为%d\n",i,cnt); if(max for(i=0;i max=cnt; max2=i; } } }printf("%d的入度最大\n",max2); } void main() { MGraph G; CreateMGraph(&G);//创建无向图 print_Matrix(G);//打印邻接矩阵 check_Matrix(G);//判断是否为对称矩阵 output_Matrix(G);//输出顶点的出入度 } 程序结果

无向图的邻接矩阵创建



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3