第七章 图 02 图的存储结构(含有矩形和邻接表的创建和输出代码案例)

本文介绍了图的两种主要存储结构:邻接矩阵和邻接表。邻接矩阵适用于表示图中顶点之间的连接关系,分为无向图和有向图的情况,并讨论了带权图的表示。接着,文章通过代码案例展示了如何创建和输出邻接矩阵。此外,还提及了图的逆邻接表、十字邻接表和邻接多重表等其他存储方式。

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

1.邻接矩阵存储
l邻接矩阵是表示顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,顶点的编号依次为0-1.
G的邻接矩阵A是n阶方阵,定义:
1)无向图,则
A[i][j]=1:若(i,j)属于E(G) 0:其它
2)G为有向图,则
A[i][j]=1:若<i,j>属于E(G) 0:其它
3)带权无向图,则
A[i][j]=wij : 若i不等j且(i,j)属于E(G) 0:i=j 无穷:其它
4)带权有向图 ,则
A[i][j]=wij : 若i不等j且<i,j>属于E(G) 0:i=j 无穷:其它
在这里插入图片描述
图的连接矩阵的创建和输出

#include<stdio.h>
#define MaxVertices 100  //设置最大100个顶点
#define MaxWeight 520521  //不邻接是为520521,但输出时用∞
typedef struct{  //包含权的邻接矩阵的定义
int Vertices[MaxVertices]; //顶点信息的数组
int Edge[MaxVertices][MaxVertices]; //边的权信息数组
int numV,numE;   //顶点数 边数 
	
} AdjMatrix;

void CreateGraph(AdjMatrix *G){//生成图
		int n,e,vi,vj,w,i,j;
		printf("请输入图的顶点数和边数(空格隔开):");
		scanf("%d%d",&n,&e);
		G->numV=n;
		G->numE=e;
		for(i=0;i<n;i++) //图的初始化
	
			for(j=0;j<n;j++){
				if(i==j)
				G->Edge[i][j]=0;
				else
				   G->Edge[i][
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值