有向图邻接矩阵c语言实现代码
时间: 2023-09-05 22:06:48 浏览: 103
代码 有向图关联矩阵和邻接矩阵的相互转换算法代码
5星 · 资源好评率100%
以下是有向图邻接矩阵的 C 语言实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 定义邻接矩阵结构体
typedef struct {
int vexs[MAX_VERTEX_NUM]; // 存放顶点的数组
int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存放边的二维数组
int vexnum, arcnum; // 顶点数和边数
} MGraph;
// 初始化邻接矩阵
void InitMGraph(MGraph *G) {
int i, j;
printf("请输入顶点数和边数:");
scanf("%d%d", &G->vexnum, &G->arcnum);
printf("请输入顶点(顶点编号从 0 开始):\n");
for (i = 0; i < G->vexnum; i++) {
scanf("%d", &G->vexs[i]);
}
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
G->arcs[i][j] = 0; // 初始化边的权重为 0
}
}
printf("请输入边的信息(起点 终点):\n");
for (i = 0; i < G->arcnum; i++) {
int start, end;
scanf("%d%d", &start, &end);
G->arcs[start][end] = 1; // 将起点和终点的权重设为 1
}
}
// 打印邻接矩阵
void PrintMGraph(MGraph *G) {
int i, j;
printf("顶点:");
for (i = 0; i < G->vexnum; i++) {
printf("%d ", G->vexs[i]);
}
printf("\n邻接矩阵:\n");
for (i = 0; i < G->vexnum; i++) {
for (j = 0; j < G->vexnum; j++) {
printf("%d ", G->arcs[i][j]);
}
printf("\n");
}
}
int main() {
MGraph G;
InitMGraph(&G);
PrintMGraph(&G);
return 0;
}
```
阅读全文