数据结构建立图c语言程序
时间: 2023-07-25 17:25:28 浏览: 89
以下是使用邻接矩阵和邻接表建立图的C语言示例程序:
1. 邻接矩阵实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 100
int matrix[MAXN][MAXN]; // 邻接矩阵
int n, m; // n为顶点数,m为边数
int main() {
memset(matrix, 0, sizeof(matrix)); // 初始化邻接矩阵
scanf("%d%d", &n, &m); // 输入顶点数和边数
for (int i = 1; i <= m; ++i) {
int u, v, w; // u和v为边的两个端点,w为边的权值
scanf("%d%d%d", &u, &v, &w);
matrix[u][v] = w; // 无向图的邻接矩阵是对称的,因此需要将两个方向都连上
matrix[v][u] = w;
}
return 0;
}
```
2. 邻接表实现:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 100
struct Edge {
int to, weight; // to为边的终点,weight为边的权值
int next; // 下一条边的编号
} edges[MAXN * 2]; // 最多有n*(n-1)条边
int head[MAXN]; // head[i]表示以i为起点的第一条边的编号
int cnt = 0; // 记录边的数量
int n, m; // n为顶点数,m为边数
int main() {
memset(head, -1, sizeof(head)); // 初始化邻接表
scanf("%d%d", &n, &m); // 输入顶点数和边数
for (int i = 1; i <= m; ++i) {
int u, v, w; // u和v为边的两个端点,w为边的权值
scanf("%d%d%d", &u, &v, &w);
edges[cnt].to = v;
edges[cnt].weight = w;
edges[cnt].next = head[u];
head[u] = cnt++;
edges[cnt].to = u;
edges[cnt].weight = w;
edges[cnt].next = head[v];
head[v] = cnt++;
}
return 0;
}
```
注意,上述代码只是用于演示如何使用邻接矩阵和邻接表建立图,实际应用中需要根据具体情况进行修改和优化。
阅读全文