MGraph* create_Mgraph() /* 以邻接矩阵作为图的存储结构建立图 / { char inchar[6], enchar[6], vex, fvex, lvex; int weight; MGraph G; ArcType* arc; G = (MGraph*)malloc(sizeof(MGraph)); G = Init_MGraph(); printf("图的初始化已经完成!!\n\n"); while (1) { printf("请输入图的顶点,?表示结束:\n"); scanf("%s", inchar); vex = inchar[0]; if (vex == '?') break; else AddVertex(G, vex); } arc = (ArcType*)malloc(sizeof(ArcType)); if (G->kind == DG || G->kind == AG) { printf("\n请以(顶点,顶点)的形式输入图的边(或弧),第一个顶点是?表示结束:\n"); while (1) { scanf("%s", inchar); /* 输入第一个顶点,?结束 / fvex = inchar[0]; if (fvex == '?') break; else { scanf("%s", enchar); lvex = enchar[0]; / 输入第二个顶点 / arc->vex1 = fvex; arc->vex2 = lvex; arc->ArcVal = 1; AddArc(G, arc); printf("请继续输入下一条边(或弧)!!\n"); } } } else { printf("\n请以(顶点,顶点,权值)的形式输入图的边(或弧),第一个顶点是?表示结束:\n"); while (1) { scanf("%s", inchar); fvex = inchar[0]; / 输入第一个顶点,?结束 / if (fvex == '?') break; else { scanf("%s", enchar); / 输入第二个顶点 / getchar(); / 取消回车键 / scanf("%d", &weight); / 输入权值 */ lvex = enchar[0]; arc->vex1 = fvex; arc->vex2 = lvex; arc->ArcVal = weight; AddArc(G, arc); printf("请继续输入下一条边(或弧)!!\n"); } } } return(G); }的时间复杂度
时间: 2024-04-24 10:22:42 浏览: 47
数据结构实验3.2:以邻接矩阵为存储结构的图的深度、宽度优先遍历.doc
5星 · 资源好评率100%
这段代码主要是用来创建图的邻接矩阵表示的存储结构,并且读入图的顶点和边(或弧)。其中,图的初始化是常数时间复杂度,而后面的 while 循环是 O(E) 的时间复杂度,其中 E 表示边(或弧)的数量。因此,该函数的时间复杂度为 O(E)。需要注意的是,这里的 E 是输入的边(或弧)的数量,而不是图的实际边(或弧)的数量,因为输入的边(或弧)可能会包含重复的边(或弧)。
阅读全文