邻接矩阵

本文介绍无向图的邻接矩阵表示方法,核心思想是顶点表和边表。通过定义结构体包含顶点数、边数以及初始为无穷大的二维数组来表示边的权值。当arc[i][j]不为无穷大时,表示顶点i与顶点j之间存在边,且由于图无向性,矩阵是对称的,权重相同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描叙:

无向图的表示方法邻接矩阵,需打印到屏幕。有权。

分析:邻接矩阵的核心思想便是顶点表和边表。

我们可以定义一个结构体,里面包含一个顶点表(即一个vexs一维数组),一个边表(即一个arc二维数组),还有两个整形变量(即一个表示为顶点数,另外一个表示为边数)。我们将二维数组初始化为无穷大(在此程序中用65535表示无穷大)。如果顶点i到顶点j有边(即此两个顶点是连接的),那个arc[ i ][ j ]里面的值即顶点i与顶点j之间的权。因为,二维数组一开始初始化为无穷大。所以我们可以知道,如果二维数组里面的值不是无穷大的,则此值的下标i和下标j分别代表顶点i和顶点j。且i和j顶点是有边连接的。
因为是无向图,所以顶点i能到顶点j就表示了顶点j能到顶点i。且他们之间的权是相同的。最后打印出来会发现,二维数组是关于主对角线对称的。 我在这个程序中将下标i和下标j相同的位置的值置位0(即权为0)。

#include"stdio.h"
typedef char VertexType;  //顶点类型
typedef int EdgeType;    //边的类型
#define  MAXVEX 100   //最大顶点数
#define INFINITY 65535 //表无穷。权的无穷大,即权不存在
typedef struct
{
    VertexType vexs[MAXVEX];    //顶点集
    EdgeType arc[MAXVEX][MAXVEX]; //边集
    int numVertexes,numEdges;//图中的顶点数和边数
}MGraph;
//建立一个无向网图的邻接矩阵表示
void CreateMGraph(MGraph *G)
{
    int i,j,k,w;
    char T;
    printf("请输入需建立图的顶点数和边数:\n");
    scanf("%d%d",&G->numVertexes,&G->numEdges);
    scanf("%c",&T);
    for(i=0;i<G-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值