数据结构笔记--创建一个无向图

本文详细介绍了如何使用邻接矩阵创建无向网,并解释了无向图的基本概念及其邻接矩阵表示法。

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

//图的数组表示法
#define INFINITY INT_MAX  //权值最大值
#define MAX_VERTEX_NUM 20 //最大顶点数
typedef enum {DG, DN, UDG, UDN};//{有向图,有向网,无向图,无向网}


typedef struct ArcCell{//弧结点结构
	VRType adj;  //权值,无权图用1/0表示是否相邻
	InfoType *info;//本弧带的信息
}ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct {
	VertexType vex[MAX_VERTEX_NUM];//顶点向量,其实就是所有顶点的数组
	AdjMatrix arcs;//邻接矩阵
	int vexnum, arcnum; //图的顶点数和弧数
	GraphKind kind;//图的类型
}MGraph;

//创建一个图
Status CreateGraph(MGraph &G)
{
	scanf(& G.kind);
	switch(G.kind)
	{
		case DG: return CreateDG(G);
		case UDG: return CreateUDG(G);
		case DN: return CreateDN(G);
		case UDN: return CreateUDN(G);
		default: return ERROR;
	}
}

//创建一个无向网
Status CreateUDN(MGraph &G)
{
	int v1, v2, w, i, j ,k;
	scanf(&G.vexnum, &G.arcnum, &incinfo);//确定图的顶点数,弧数,有信息否
	for(v=0;v<G.vexnum;v++)//构建邻接表
		for(j=0;j<G.vexnum;j++)
			G.arcs[v][j] = {INFINITY, NULL};
	
	for(k=0;k<G.arcnum;k++){
		scanf(&v1, &v2, &w);//输入一条边的顶点和权值
		i = LocateVex(G, v1);
		j = LocateVex(G, v2);
		G.arcs[i][j].adj = w;
		if(incinfo)
			scanf(&G.arcs[i][j].info);
		G.arcs[j][i] = G.arcs[i][j];
	}
	
	return ok;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值