图的存储结构(邻接矩阵)

图有两种主要的存储结构:邻接矩阵和邻接表
邻接矩阵时表示顶点之间相邻关系的矩阵。
邻接矩阵的主要特点:
(1)一个图的邻接矩阵表示是唯一的;
(2)特别适合于稠密图的存储;

图的邻接矩阵存储类型声明

#define INF   INT_MAX
#define max 30//最大顶点个数
typedef char VertexType[10];
typedef struct vertex{
	int adj;//顶点的编号 
	VertexType data;//顶点信息 
}Vtype;
typedef struct graph{
	int n,e;//n为实际顶点数,e为实际边数 
	Vtype vexs[max];//顶点集合 
	int edges[max][max];//边的集合 
}mgraph;

实现图的基本运算
(1)建立图的邻接矩阵

void create(mgraph &g,int a[][max],int n,int e)
{
	int i,j;
	g.n=n;g.e=e;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			g.edges[i][j]=a[i][j]
		}
	}
 }

(2)求顶点度

int degree1(mgraph g,int v)//无向图 
{
	int i,d=0;
	if(v<0||v>=g.n)
	{
		return -1;//顶点编号错误就返回-1 
	}
	for(i=0;i<g;i++)
	{
		if(g.edges[v][i]>0&&g.edges[v][i]<INF)
			d++;//统计v行不为0也不为无穷的边数 
	}
	return d;//有向图中还需统计v列
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值