数据结构实验(C语言):图(邻接矩阵表示及输出)

📅 2026/7/28 16:58:27
数据结构实验(C语言):图(邻接矩阵表示及输出)
文章参考过网上的内容如有侵权请联系#includestdio.h#includestdlib.h#defineMAX_NUM 20//顶点最大个数typedefstructArcCell{intadj;//用1和0表示顶点是否相邻}ArcCell,AdjMatrix[MAX_NUM][MAX_NUM];typedefstruct{intvexs[MAX_NUM];//顶点向量AdjMatrix arcs;//邻接矩阵intvnum,anum;//图的当前顶点数和弧数}MGraph;intLocateVex(MGraph G,intv1){for(intiG.vnum-1;G.vexs[i]!v1;i--)returni;}intCreate(MGraphG){//采用数组邻接矩阵表示法构造无向网Gintv1,v2,i,j,k;//弧的顶点printf(输入顶点\n);for(i0;iG.vnum;i)scanf(%d,G.vexs[i]);//构造顶点向量for(i0;iG.vnum;i)//初始化邻接矩阵for(j0;jG.vnum;j)G.arcs[i][j]{0};printf(输入边\n);for(k0;kG.anum;k){//构造邻接矩阵scanf(%d%d,v1,v2);//输入一条边的两个顶点//iLocateVex(G,v1); jLocateVex(G,v2); //确定v1,v2在G中的位置G.arcs[v1][v2].adj1;G.arcs[v2][v1]G.arcs[v1][v2];//置v1,v2的对称弧v2,v1}return1;}voiddisp(MGraph G){//输出矩阵intj;for(inti1;iG.vnum;i){for(j1;jG.vnum;j){printf(%d ,G.arcs[i][j].adj);if(jG.vnum)printf(\n);}}}intmain(){intvnum1,anum1;MGraph G;printf(输入顶点数\n);scanf(%d,vnum1);printf(输入弧数\n);scanf(%d,anum1);G.vnumvnum1;G.anumanum1;Create(G);disp(G);}