C语言邻接矩阵有向带权图
时间: 2023-10-18 07:14:22 浏览: 122
邻接矩阵有向带权图可以使用二维数组来表示,数组的行表示起点,列表示终点,数组元素表示起点到终点的权值。如果两个节点之间没有边相连,则对应的数组元素值为0或者一个特定的无穷大值。
下面是一个C语言实现邻接矩阵有向带权图的代码示例:
```
#define MAX_VERTEX_NUM 100 // 最大顶点数量
#define INFINITY 65535 // 无穷大值
typedef struct {
char vertex[MAX_VERTEX_NUM]; // 顶点信息
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 邻接矩阵
int vertex_num; // 顶点数量
int arc_num; // 弧(边)数量
} MGraph;
void CreateGraph(MGraph *G) {
int i, j;
printf("请输入顶点数量和弧(边)数量:\n");
scanf("%d %d", &G->vertex_num, &G->arc_num);
printf("请输入顶点信息:\n");
for (i = 0; i < G->vertex_num; i++) {
scanf("%s", &G->vertex[i]);
}
// 初始化邻接矩阵
for (i = 0; i < G->vertex_num; i++) {
for (j = 0; j < G->vertex_num; j++) {
G->arc[i][j] = INFINITY;
}
}
// 输入弧(边)信息
for (i = 0; i < G->arc_num; i++) {
int start, end, weight;
printf("请输入第%d条弧(边)的起点、终点和权值:\n", i + 1);
scanf("%d %d %d", &start, &end, &weight);
G->arc[start][end] = weight;
}
}
```
在主函数中,可以按照如下方式调用CreateGraph函数来创建邻接矩阵有向带权图:
```
int main() {
MGraph G;
CreateGraph(&G);
return 0;
}
```
以上代码只是一个简单的示例,实际上还需要考虑很多其他的问题,比如如何处理顶点和边的删除、如何遍历图等等。
阅读全文