数据结构采用邻接矩阵表示法创建无向网 代码
时间: 2024-12-19 08:27:20 浏览: 6
邻接矩阵表示法的C语言类型描述为-数据结构 图
使用邻接矩阵表示无向图是一种常见的方法,它通过一个二维数组来存储图中的节点及其相互之间的连接关系。如果两个节点之间有边相连,则对应的矩阵元素值为1或非零;没有连接则为0。
以下是一个简单的C语言示例,用于创建并初始化一个无向图的邻接矩阵:
```c
#include <stdio.h>
// 定义节点数量(假设为5)
#define NUM_NODES 5
// 邻接矩阵,用int类型表示0(无连接)和1(有连接),实际项目可能需要更大类型的数组
typedef int adjacency_matrix[NUM_NODES][NUM_NODES];
// 初始化邻接矩阵
void init_adjacency_matrix(adjacency_matrix graph) {
for (int i = 0; i < NUM_NODES; i++) {
for (int j = 0; j < NUM_NODES; j++) {
if (i != j) { // 只初始化下三角和对角线(因为无向图的邻接矩阵是对称的)
graph[i][j] = 0;
}
}
}
}
// 添加边到矩阵(这里简化处理,只添加单条边)
void add_edge(adjacency_matrix graph, int src, int dest) {
graph[src][dest] = 1; // 如果源节点和目标节点不同,则添加边
graph[dest][src] = 1; // 对应另一个方向也添加边(无向图)
}
// 主函数演示如何使用
int main() {
adjacency_matrix graph;
init_adjacency_matrix(graph);
int num_edges = 3; // 假设要添加3条边
for (int i = 0; i < num_edges; i++) {
int edge[] = {i, i + 1}; // 示例,从0到1,1到2等
add_edge(graph, edge[0], edge[1]);
}
// 打印邻接矩阵,仅显示下三角(其余部分由对称性确定)
printf("Adjacency Matrix:\n");
for (int i = 0; i < NUM_NODES; i++) {
for (int j = i+1; j < NUM_NODES; j++) {
printf("%d ", graph[i][j]); // 假设有边则输出1,否则输出0
}
printf("\n");
}
return 0;
}
```
这个例子中,我们首先定义了一个邻接矩阵,然后初始化所有内部元素为0(表示默认没有边)。`add_edge`函数用于添加指定的边到矩阵中。注意,这只是一个基础示例,实际应用中可能需要根据需求进行调整,比如使用更复杂的边结构、动态分配内存等。
阅读全文