无向图的邻接矩阵(数组表示法)
时间: 2023-08-29 17:07:28 浏览: 109
邻接矩阵是一种用于表示图的数据结构,适用于无向图和有向图。对于无向图,邻接矩阵是一个对称矩阵。
在邻接矩阵中,每个节点都对应矩阵中的一行和一列,如果两个节点之间有边相连,则相应的矩阵元素为1,否则为0。如果图中有权重,则可以将矩阵元素设置为它们之间的边权值。
以下是一个用数组表示法实现无向图邻接矩阵的示例代码:
```
#define MAX_VERTEX_NUM 100 //最大顶点数
typedef struct{
int vertex[MAX_VERTEX_NUM]; //顶点数组
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; //邻接矩阵数组
int vertex_num, arc_num; //顶点数和边数
}Graph;
Graph create_graph(int vertex_num, int arc_num){
Graph g;
g.vertex_num = vertex_num;
g.arc_num = arc_num;
for(int i=0; i<vertex_num; i++){
g.vertex[i] = i; //初始化顶点数组
}
for(int i=0; i<vertex_num; i++){
for(int j=0; j<vertex_num; j++){
g.arc[i][j] = 0; //初始化邻接矩阵数组
}
}
for(int k=0; k<arc_num; k++){
int i, j;
scanf("%d%d", &i, &j);
g.arc[i][j] = 1; //无向图邻接矩阵设置
g.arc[j][i] = 1; //无向图邻接矩阵设置
}
return g;
}
```
在上述代码中,create_graph函数用于创建无向图邻接矩阵。首先初始化顶点数组和邻接矩阵数组,然后按照输入的边数设置邻接矩阵数组中的元素。最后返回创建好的图结构体。
阅读全文