- 论坛徽章:
- 0
|
- #include <stdio.h>
- /* 图的邻接矩阵表示法的存储结构 */
- typedef char VertexType; /* 用户自定义顶点数据类型 */
- typedef int EdgeType; /* 用户自定义权值类型 */
- #define MAXVEX 100
- #define INFINITY 65535
- typedef struct MGraph
- {
- VertexType vex[MAXVEX];
- EdgeType arc[MAXVEX][MAXVEX];
- int numVertexes, numEdges; /* 顶点个数和边的个数 */
- } MGraph;
- /* 对即将在主函数中调用的函数进行声明 */
- void CreateMGraph(MGraph *G);
- int main(void)
- {
- MGraph G;
- int i, j;
- CreateMGraph(&G);
- printf("输入两顶点的下标: ");
- scanf("%d,%d", &i, &j);
- if (G.arc[i][j] != INFINITY)
- printf("两顶点之间有边,权值为: %d", G.arc[i][j]);
- else
- printf("两顶点之间无边");
- printf("\n");
- return 0;
- }
- /* 无向网图的构建 */
- void CreateMGraph(MGraph *G)
- {
- int i, j, k;
- EdgeType w;
- printf("输入当前图的顶点数和边数:\n");
- scanf("%d,%d", &G->numVertexes, &G->numEdges);
- /* 输入顶点信息建立顶点表 */
- i = 0;
- do
- {
- scanf("%c", &G->vex[i]);
- ++ i;
- }
- while (G->vex[i] == '\n' && i < G->numVertexes);
- /* 对边表进行初始化 */
- for (i = 0; i < G->numVertexes; ++i)
- for (j = 0; j < G->numVertexes; ++j)
- G->arc[i][j] = INFINITY;
- /* 输入边的信息,建立邻接矩阵 */
- for (k = 0; k < G->numEdges; ++k)
- {
- printf("分别输入边 (vi,vj) 的下标值 i, j 和边上的权值 w:\n");
- scanf("%d,%d,%d", &i, &j, &w);
- G->arc[i][j] = w;
- G->arc[j][i] = G->arc[i][j]; /* 因为是无向图所以矩阵对称 */
- }
- }
复制代码 最后执行的时候完全出现不了建立顶点表的信息,我想应该是下面这段代码出问题了,但是不知道问题在哪?求指教- /* 输入顶点信息建立顶点表 */
- i = 0;
- do
- {
- scanf("%c", &G->vex[i]);
- ++ i;
- }
- while (G->vex[i] == '\n' && i < G->numVertexes);
复制代码 |
|