📅  最后修改于: 2023-12-03 14:53:37.030000             🧑  作者: Mango
图邻接矩阵是描述图结构的一种形式,通常用二维数组表示。在C语言中,我们可以利用二维数组来实现图邻接矩阵。本文将介绍如何使用C语言实现给定图邻接矩阵的程序。我们将先了解图邻接矩阵的基本概念,然后按照以下步骤来实现程序:
邻接矩阵是一种表示顶点之间相邻关系的二维矩阵,其中矩阵行列表示顶点,矩阵元素表示该顶点之间是否相邻。当顶点i与顶点j之间相邻时,矩阵元素a[i][j]的值为1,否则为0。
优点:邻接矩阵易于理解和实现,适用于稠密图(即图的边比较多)。
缺点:对于稀疏图,空间复杂度较大。在查找两个节点之间的距离时,需要遍历所有节点,时间复杂度较高。对于有向图,需要使用两个矩阵才能表示。
我们先定义一个二维数组来存储邻接矩阵。数组大小需要根据实际图的大小确定,这里我们假设图的节点数为5。
int graph[5][5];
然后,我们需要输入图的边信息并构建邻接矩阵。我们可以通过读入每条边的起点和终点来更新邻接矩阵。
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
graph[i][j]=0;//初始化邻接矩阵
}
}
//读入每条边的起点和终点
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
graph[a][b]=graph[b][a]=1;
}
最后,我们需要遍历邻接矩阵并输出它的内容。
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d ",graph[i][j]);
}
printf("\n");
}
#include <stdio.h>
int main(){
int graph[5][5];
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
graph[i][j]=0;
}
}
int a,b;
while(scanf("%d %d",&a,&b)!=EOF){
graph[a][b]=graph[b][a]=1;
}
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d ",graph[i][j]);
}
printf("\n");
}
return 0;
}
以上就是实现给定图邻接矩阵的C程序的介绍。对于更大的节点数的图,只需要调整数组大小即可。在使用邻接矩阵时,还需要注意空间和时间复杂度的问题。