C语言采用数组邻接矩阵表示法,构造无向图网(给出详细代码)
时间: 2024-11-14 16:23:22 浏览: 4
邻接矩阵法实现图C代码
C语言中,我们可以使用二维数组来表示无向图的邻接矩阵。这种表示方法基于这样的思想:如果节点i和节点j之间有一条边,那么邻接矩阵的元素`matrix[i][j]`和`matrix[j][i]`将被设置为非零值,通常为1或其他正整数来标识边的存在。
下面是一个简单的示例,展示如何创建一个无向图并使用邻接矩阵来表示:
```c
#include <stdio.h>
#define MAX_NODES 10 // 图的最大节点数
// 邻接矩阵结构
typedef int graph[MAX_NODES][MAX_NODES];
// 函数声明,用于初始化邻接矩阵
void initialize_graph(graph matrix, int num_nodes);
int main() {
graph adj_matrix; // 初始化一个空的邻接矩阵
int num_nodes, i, j;
printf("Enter the number of nodes in the graph: ");
scanf("%d", &num_nodes);
// 初始化所有元素为0(无边)
initialize_graph(adj_matrix, num_nodes);
printf("\nAdjacency Matrix (unweighted graph):\n");
for (i = 0; i < num_nodes; i++) {
for (j = 0; j < num_nodes; j++) {
if (i != j) { // 只打印非对角线元素
printf("%d ", adj_matrix[i][j]);
}
}
printf("\n");
}
return 0;
}
// 初始化函数
void initialize_graph(graph matrix, int num_nodes) {
for (int i = 0; i < num_nodes; i++) {
for (int j = 0; j < num_nodes; j++) {
matrix[i][j] = 0; // 如果不是相邻节点,则设为0
}
}
}
```
在这个例子中,用户输入图的节点数量,程序会创建一个全零的邻接矩阵,然后可以根据需要手动添加边(将对应位置的元素置为非零)。请注意,这只是一个基础版本,实际应用中可能还需要处理有向图、加权边等复杂情况。
阅读全文