c语言 图的存储邻接矩阵,C语言 实现邻接矩阵存储图
时间: 2023-10-18 13:11:59 浏览: 81
好的,以下是 C 语言实现邻接矩阵存储图的代码示例:
```
#include<stdio.h>
#include<stdlib.h>
#define MAX_VERTEX_NUM 20 // 最大顶点数
typedef char VertexType; // 顶点数据类型
typedef int EdgeType; // 边的权值类型
typedef struct {
VertexType vertex[MAX_VERTEX_NUM]; // 存放顶点信息的一维数组
EdgeType edge[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存放邻接矩阵的二维数组
int vertexNum; // 顶点数
int edgeNum; // 边数
} MGraph;
// 初始化邻接矩阵
void InitMGraph(MGraph *G) {
int i, j;
printf("请输入顶点数和边数:");
scanf("%d %d", &G->vertexNum, &G->edgeNum);
getchar(); // 吃掉回车符
printf("请输入顶点信息:");
for(i = 0; i < G->vertexNum; i++) {
scanf("%c", &G->vertex[i]);
getchar(); // 吃掉回车符
}
// 初始化邻接矩阵
for(i = 0; i < G->vertexNum; i++) {
for(j = 0; j < G->vertexNum; j++) {
G->edge[i][j] = 0;
}
}
// 输入边的信息,建立邻接矩阵
int v1, v2, weight;
for(i = 0; i < G->edgeNum; i++) {
printf("请输入第%d条边的两个顶点和权值:", i + 1);
scanf("%d %d %d", &v1, &v2, &weight);
G->edge[v1][v2] = weight;
G->edge[v2][v1] = weight; // 无向图邻接矩阵对称
}
}
// 打印邻接矩阵
void PrintMGraph(MGraph *G) {
int i, j;
printf("顶点数:%d,边数:%d\n", G->vertexNum, G->edgeNum);
printf("顶点信息:");
for(i = 0; i < G->vertexNum; i++) {
printf("%c ", G->vertex[i]);
}
printf("\n邻接矩阵:\n");
for(i = 0; i < G->vertexNum; i++) {
for(j = 0; j < G->vertexNum; j++) {
printf("%d ", G->edge[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
InitMGraph(&G);
PrintMGraph(&G);
return 0;
}
```
以上就是 C 语言实现邻接矩阵存储图的代码示例,希望对你有所帮助!
阅读全文