c语言 图的存储邻接矩阵,C语言 实现邻接矩阵存储图
时间: 2023-10-18 21:31:31 浏览: 90
好的,我可以帮你解答这个问题。
在使用邻接矩阵存储图时,我们可以用一个二维数组来表示图中各个顶点之间的连通关系。具体来说,如果顶点i和j之间有边相连,那么邻接矩阵中第i行第j列的元素值就为1,否则为0。
以下是一个用 C 语言实现邻接矩阵存储图的示例代码:
```
#define MAX_VERTICES 100 // 图中最多有100个顶点
int adjMatrix[MAX_VERTICES][MAX_VERTICES]; // 邻接矩阵
int main()
{
int numVertices, numEdges;
scanf("%d%d", &numVertices, &numEdges); // 输入图的顶点数和边数
// 初始化邻接矩阵
for (int i = 0; i < numVertices; i++)
for (int j = 0; j < numVertices; j++)
adjMatrix[i][j] = 0;
// 读入边信息,更新邻接矩阵
for (int i = 0; i < numEdges; i++)
{
int u, v;
scanf("%d%d", &u, &v); // 输入一条边的两个顶点
// 对于无向图,需要在邻接矩阵中同时更新u->v和v->u这两个位置
adjMatrix[u][v] = 1;
adjMatrix[v][u] = 1;
}
// 输出邻接矩阵
for (int i = 0; i < numVertices; i++)
{
for (int j = 0; j < numVertices; j++)
printf("%d ", adjMatrix[i][j]);
printf("\n");
}
return 0;
}
```
以上代码中,我们首先定义了一个二维数组 `adjMatrix` 来存储邻接矩阵。在 `main()` 函数中,我们首先读入图的顶点数和边数,然后初始化邻接矩阵中所有元素的值为0。
接着,我们读入每条边的信息,并在邻接矩阵中更新相应的位置。需要注意的是,对于无向图,我们需要在邻接矩阵中同时更新两个位置,即 `adjMatrix[u][v]` 和 `adjMatrix[v][u]`。
最后,我们输出邻接矩阵中的所有元素,以便查看存储的结果。
阅读全文