c语言创建并打印邻接矩阵
时间: 2023-12-03 09:05:22 浏览: 137
以下是C语言创建并打印邻接矩阵的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MaxVertexNum 100
#define INFINITY 65535
typedef char VertexType;
typedef int EdgeType;
typedef struct {
VertexType vexs[MaxVertexNum]; // 存储顶点信息
EdgeType arcs[MaxVertexNum][MaxVertexNum]; // 存储边的权值
int vexnum, arcnum; // 记录图的顶点数和边数
} MGraph;
// 创建邻接矩阵
void CreateMGraph(MGraph* G) {
int i, j, k, w;
printf("请输入顶点数和边数:\n");
scanf("%d %d", &G->vexnum, &G->arcnum);
getchar(); // 读取换行符
printf("请输入顶点信息:\n");
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] = INFINITY; // 初始化邻接矩阵
}
}
printf("请输入边的信息:\n");
for (k = 0; k < G->arcnum; k++) {
printf("请输入第%d条边的起点、终点和权值:\n", k + 1);
scanf("%d %d %d", &i, &j, &w);
G->arcs[i][j] = w;
G->arcs[j][i] = w; // 无向图的邻接矩阵是对称的
}
}
// 打印邻接矩阵
void PrintMGraph(MGraph* G) {
int i, j;
printf(" ");
for (i = 0; i < G->vexnum; i++) {
printf("%c ", G->vexs[i]);
}
printf("\n");
for (i = 0; i < G->vexnum; i++) {
printf("%c ", G->vexs[i]);
for (j = 0; j < G->vexnum; j++) {
if (G->arcs[i][j] == INFINITY) {
printf("∞ ");
} else {
printf("%d ", G->arcs[i][j]);
}
}
printf("\n");
}
}
// 主函数
int main() {
MGraph G;
CreateMGraph(&G);
PrintMGraph(&G);
return 0;
}
```
阅读全文