非常抱歉之前的回答没有满足您的要求。以下是另一组与之前不同的满足要求的MGraph完整代码:
MGraph.h:
#ifndef MGRAPH_H
#define MGRAPH_H
#define MAX_VERTEX_NUM 100 // 图的最大顶点数
// 图的顶点类型
typedef char VertexType;
// 图的边类型
typedef int EdgeType;
// 图的邻接矩阵结构定义
typedef struct {
VertexType vexs[MAX_VERTEX_NUM]; // 顶点表
EdgeType edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵,存储边信息
int vexNum; // 当前顶点数
int edgeNum; // 当前边数
} MGraph;
// 创建图(邻接矩阵表示)
void CreateGraph(MGraph* G);
// 输出邻接矩阵
void PrintMatrix(const MGraph* G);
#endif
MGraph.c:
#include <stdio.h>
#include "MGraph.h"
// 创建图(邻接矩阵表示)
void CreateGraph(MGraph* G) {
printf("请输入图的顶点数和边数:");
scanf("%d%d", &G->vexNum, &G->edgeNum);
printf("请输入图的顶点信息:\n");
for (int i = 0; i < G->vexNum; i++) {
scanf(" %c", &G->vexs[i]);
}
for (int i = 0; i < G->vexNum; i++) {
for (int j = 0; j < G->vexNum; j++) {
G->edges[i][j] = 0; // 初始化邻接矩阵,所有边置为零
}
}
printf("请输入各边的起始顶点和终止顶点序号:\n");
for (int k = 0; k < G->edgeNum; k++) {
int start, end;
printf("请输入第%d条边的起始顶点和终止顶点序号:", k + 1);
scanf("%d%d", &start, &end);
if (start >= G->vexNum || end >= G->vexNum) {
printf("输入的顶点序号超出范围,请重新输入。\n");
k--;
continue;
}
G->edges[start][end] = 1;
}
}
// 输出邻接矩阵
void PrintMatrix(const MGraph* G) {
printf("图的邻接矩阵表示如下:\n");
for (int i = 0; i < G->vexNum; i++) {
for (int j = 0; j < G->vexNum; j++) {
printf("%d ", G->edges[i][j]);
}
printf("\n");
}
}
main.c:
#include <stdio.h>
#include "MGraph.h"
int main() {
MGraph graph;
CreateGraph(&graph);
PrintMatrix(&graph);
return 0;
}
请将以上代码分别保存为MGraph.h、MGraph.c和main.c,并在同一目录下进行编译和运行,即可得到另一组满足要求的MGraph程序。如有任何问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问