用c语言代码输出无向带权图的邻接表
时间: 2023-12-21 17:57:59 浏览: 156
C++实现有向图的邻接表表示
5星 · 资源好评率100%
好的,以下是C语言代码输出无向带权图的邻接表的示例:
```c
#include <stdio.h>
#define MAXV 1000 // 最大顶点数
#define INF 0x3f3f3f3f // 表示无穷大的值
int n, m; // 顶点数和边数
int adj[MAXV][MAXV]; // 邻接矩阵表示图
int degree[MAXV]; // 存储每个顶点的度数
void init() {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
adj[i][j] = INF; // 初始化为无穷大
}
}
}
void addEdge(int u, int v, int w) { // 添加边
adj[u][v] = w;
adj[v][u] = w;
degree[u]++;
degree[v]++;
}
void printGraph() { // 输出邻接表
printf("Vertex\tDegree\tAdjacency List\n");
for (int i = 1; i <= n; i++) {
printf("%d\t%d\t", i, degree[i]);
for (int j = 1; j <= n; j++) {
if (adj[i][j] != INF && i < j) {
printf("%d(%d) ", j, adj[i][j]);
}
}
printf("\n");
}
}
int main() {
scanf("%d %d", &n, &m); // 输入顶点数和边数
init();
for (int i = 0; i < m; i++) {
int u, v, w;
scanf("%d %d %d", &u, &v, &w); // 输入每条边的起点、终点、权值
addEdge(u, v, w); // 添加边
}
printGraph(); // 输出邻接表
return 0;
}
```
Hope it helps!
阅读全文