图--基本概念及源码表示

本文介绍了图这种数据结构,用于表示多对多的关系。图的两种常见表示方法是邻接矩阵和邻接表。邻接矩阵适用于检查任意两点间是否有边,计算顶点的度数,但空间效率较低。而邻接表则更节省空间,尤其在处理稀疏图时。文章以C#语言展示了如何在程序中实现这两种表示方法,并分析了它们的时间复杂度。
摘要由CSDN通过智能技术生成

什么是图?
表示多对多的关系
怎么在程序中表示图?

  1. 邻接矩阵
  2. 邻接表

邻接矩阵
邻接矩阵G[N][N]——N个顶点从0到N-1编号 ,若v[i][j]==1,则(i,j)是一组边。
优点:
1 :方便检查任意一对顶点间是否存在边
2: 方便找任一顶点的所有“邻接点”
3: 方便计算任一顶点的“度”(从该点发出的边数为“出 度”,指向该点的边数为“入度”)

/*邻接矩阵的定义*/
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100 /* 最大顶点数,应由用户定义 */
#define INFINITY 65535
 
typedef int Status;	/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef char VertexType; /* 顶点类型应由用户定义  */
typedef int EdgeType; /* 边上的权值类型应由用户定义 */
typedef struct
{
	VertexType vexs[MAXVEX]; /* 顶点表 */
	EdgeType arc[MAXVEX][MAXVEX];/* 邻接矩阵,可看作边表 */
	int numNodes, numEdges; /* 图中当前的顶点数和边数  */
}MGraph;
/* 建立无向网图的邻接矩阵表示 */
void CreateMGraph(MGraph *G)
{
	int i,j,k,w;
	printf("输入顶点数和边数:\n");
	scanf("
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值