图(二):图的邻接矩阵表示

#include<iostream>
using namespace std;
//---------------图的邻接矩阵存储表示---------------
#define MaxInt 32767			//表示极大值 即无穷
#define MVNum 100				//最大顶点数
typedef char VerTexType;		//假设顶点的数据类型为字符型
typedef int ArcType;			//假设边的权值类型为整型
typedef struct
{
	VerTexType vexs[MVNum];		//顶点表
	ArcType arcs[MVNum][MVNum];	//邻接矩阵
	int vexnum, arcnum;			//图的当前点数和边数
}AMGraph;
void CreateUDN(AMGraph& G)
{
	//采用邻接矩阵表示法,创建无向网G
	cin >> G.vexnum >> G.arcnum;
	for (int i = 0; i < G.vexnum; ++i)
		cin >> G.vexs[i];
	for (int i = 0; i < G.vexnum; ++i)		//初始化邻接矩阵,边的权值均置为极大值MaxInt
		for (int j = 0; j < G.vexnum; ++j)
			G.arcs[i][j] = MaxInt;
	for (int k = 0; k < G.arcnum; ++k)
	{
		int v1, v2, w;						//输入一条边依附的顶点及权值
		cin >> v1 >> v2 >> w;
		//i=Locate(G,v1);j=Locate(G,v2);//确定v1和v2在G中的位置,即顶点数组的下标
		//原则上需要用i j代替v1 v2
		G.arcs[v1][v2] = w;
		G.arcs[v2][v1] = G.arcs[v1][v2];
	}
}
posted @ 2021-08-09 08:50  小帆敲代码  阅读(34)  评论(0编辑  收藏  举报