void CreatMGraph(MGraph &G) { int i, j, k; scanf("%d%d", &G.vexnum, &G.arcnum); getchar(); //读取换行符 for (i = 0; i < G.vexnum; i++) { scanf("%c", &G.vexs[i]); getchar(); //读取换行符 } for (i = 0; i < G.vexnum; i++) for (j = 0; j < G.vexnum; j++) G.arcs[i][j] = 0; for (k = 0; k < G.arcnum; k++) { scanf("%d,%d", &i, &j); getchar(); //读取换行符 G.arcs[i][j] = 1; G.arcs[j][i] = 1; //无向图需要将两个方向都置为1 } for (i = 0; i < G.vexnum; i++) { printf("%d:", i); for (j = 0; j < G.vexnum; j++) { if (G.arcs[i][j] == 1) { printf(" %d", j); } } printf("\n"); } }
时间: 2024-04-02 17:31:13 浏览: 50
数据结构课程设计学校超市选址问题.doc
这段代码是用来创建一个无向图的邻接矩阵表示的函数。函数中的参数MGraph &G表示传入的图结构体变量的引用。函数首先读取输入的顶点数和边数,然后依次读取每个顶点的名称,并将邻接矩阵的所有位置初始化为0。接下来,循环读取每条边的起点和终点,并将其在邻接矩阵中的对应位置置为1(因为是无向图,所以需要将两个方向都置为1)。最后,函数输出邻接表表示的图。
需要注意的是,在读取顶点和边的输入时,需要使用getchar()函数读取换行符,否则会导致后面的输入读取错误。同时,该函数只适用于较小的图,因为邻接矩阵的空间复杂度为O(n^2),在图较大时会占用大量内存。
阅读全文