'MGRAPH H.h': No such file or directory
时间: 2023-09-27 13:07:57 浏览: 88
这个错误通常是因为编译器找不到MGRAPH库的头文件H.h。你需要检查一下你的编译环境是否正确配置了MGRAPH库,并且在编译的时候正确地指定了头文件路径。如果你使用的是Visual Studio等IDE,需要在项目属性中添加头文件路径;如果是使用命令行编译,需要在编译命令中加入头文件路径参数。同时,你需要确保MGRAPH库已经正确地安装在你的机器上。
相关问题
给出一个测试函数,里面有随机一组测试数据:void CreateMGraph(MGraph &H) //创建邻接矩阵 (无向图) { int i, j, k, w; printf("请输入顶点数和边数:\n"); scanf("%d %d", &H.n, &H.e); printf("请输入顶点信息:\n"); for (i = 0; i < H.n; i++) { scanf("%s", &H.vexs[i].info); //s or d? H.vexs[i].no = i; } for (i = 0; i < H.n; i++) { for (j = 0; j < H.n; j++) { H.edges[i][j] = -1; } } printf("请输入每条边的起点、终点和权值:\n"); for (k = 0; k < H.e; k++) { char c1,c2; scanf("%c %c %d", &c1, &c2, &w); //s or d i = c1-'A'; j = c2-'A'; H.edges[i][j] = w; H.edges[j][i] = w; //无向图,所以要将两个方向都存储 } }
这个函数是用来创建一个邻接矩阵表示的无向图,其中包括顶点信息、边的起点和终点以及权值。下面是一个完整的测试函数,它会随机生成一个无向图,并输出邻接矩阵表示。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_VERTEX_NUM 26 // 最多顶点个数
typedef struct { // 存储顶点信息的结构体
char info;
int no;
} VertexType;
typedef struct { // 存储邻接矩阵的结构体
int edges[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
VertexType vexs[MAX_VERTEX_NUM];
int n, e;
} MGraph;
void CreateMGraph(MGraph &H) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d %d", &H.n, &H.e);
printf("请输入顶点信息:\n");
for (i = 0; i < H.n; i++) {
scanf(" %c", &H.vexs[i].info);
H.vexs[i].no = i;
}
for (i = 0; i < H.n; i++) {
for (j = 0; j < H.n; j++) {
H.edges[i][j] = -1;
}
}
printf("请输入每条边的起点、终点和权值:\n");
for (k = 0; k < H.e; k++) {
char c1, c2;
scanf(" %c %c %d", &c1, &c2, &w);
i = c1 - 'A';
j = c2 - 'A';
H.edges[i][j] = w;
H.edges[j][i] = w; // 无向图,所以要将两个方向都存储
}
}
void PrintMGraph(MGraph H) { // 打印邻接矩阵
int i, j;
printf("邻接矩阵为:\n");
for (i = 0; i < H.n; i++) {
for (j = 0; j < H.n; j++) {
printf("%d ", H.edges[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
srand(time(NULL));
G.n = rand() % MAX_VERTEX_NUM + 1;
G.e = G.n * (G.n - 1) / 4;
for (int i = 0; i < G.n; i++) {
G.vexs[i].info = 'A' + i;
G.vexs[i].no = i;
}
for (int i = 0; i < G.n; i++) {
for (int j = i + 1; j < G.n; j++) {
if (rand() % 2 == 0) {
G.edges[i][j] = G.edges[j][i] = rand() % 100 + 1;
G.e++;
}
}
}
PrintMGraph(G);
return 0;
}
```
这个测试函数会随机生成一个顶点数不超过 26 的无向图,并输出邻接矩阵表示。你可以根据需要修改顶点数、边数和权值范围等参数。
给出该代码的测试函数,且测试函数内带有测试数据:void CreateMGraph(MGraph &H) //创建邻接矩阵(有向图) { int i, j, k, w; printf("请输入顶点数和边数:\n"); scanf("%d %d", &H.n, &H.e); printf("请输入顶点信息:\n"); for (i = 0; i < H.n; i++) { scanf("%d", &H.vexs[i].info); H.vexs[i].no = i; } for (i = 0; i < H.n; i++) { for (j = 0; j < H.n; j++) { H.edges[i][j] = -1; //默认没有边,权值为-1 } } printf("请输入每条边的起点、终点和权值:\n"); for (k = 0; k < H.e; k++) { scanf("%d %d %d", &i, &j, &w); H.edges[i][j] = w; //i指向j,权值为w } }
以下是一个简单的测试函数,用于测试CreateMGraph函数:
```c++
void testCreateMGraph() {
MGraph H;
CreateMGraph(H);
printf("邻接矩阵:\n");
for (int i = 0; i < H.n; i++) {
for (int j = 0; j < H.n; j++) {
printf("%d ", H.edges[i][j]);
}
printf("\n");
}
}
```
测试数据:
```
输入:
4 5
1 2 3 4
0 1 2
0 2 1
1 3 4
2 1 1
2 3 1
```
输出:
```
邻接矩阵:
-1 2 1 -1
-1 -1 -1 4
-1 1 -1 1
-1 -1 -1 -1
```