📜  实现给定图邻接矩阵的C程序(1)

📅  最后修改于: 2023-12-03 14:53:37.030000             🧑  作者: Mango

介绍

图邻接矩阵是描述图结构的一种形式,通常用二维数组表示。在C语言中,我们可以利用二维数组来实现图邻接矩阵。本文将介绍如何使用C语言实现给定图邻接矩阵的程序。我们将先了解图邻接矩阵的基本概念,然后按照以下步骤来实现程序:

  1. 定义二维数组
  2. 输入边的信息
  3. 输出邻接矩阵

图邻接矩阵的基本概念

  1. 邻接矩阵的定义

邻接矩阵是一种表示顶点之间相邻关系的二维矩阵,其中矩阵行列表示顶点,矩阵元素表示该顶点之间是否相邻。当顶点i与顶点j之间相邻时,矩阵元素a[i][j]的值为1,否则为0。

  1. 邻接矩阵的优缺点

优点:邻接矩阵易于理解和实现,适用于稠密图(即图的边比较多)。

缺点:对于稀疏图,空间复杂度较大。在查找两个节点之间的距离时,需要遍历所有节点,时间复杂度较高。对于有向图,需要使用两个矩阵才能表示。

实现步骤

1.定义二维数组

我们先定义一个二维数组来存储邻接矩阵。数组大小需要根据实际图的大小确定,这里我们假设图的节点数为5。

int graph[5][5];
2.输入边的信息

然后,我们需要输入图的边信息并构建邻接矩阵。我们可以通过读入每条边的起点和终点来更新邻接矩阵。

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;
}
3.输出邻接矩阵

最后,我们需要遍历邻接矩阵并输出它的内容。

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程序的介绍。对于更大的节点数的图,只需要调整数组大小即可。在使用邻接矩阵时,还需要注意空间和时间复杂度的问题。