邻接矩阵表示法表示图


#include<iostream>
#define MaxInt 32767
#define MVNum 100
using namespace std;
typedef char VerTexType;//假设顶点的数据类型为字符型
typedef int ArcType;//假设便的权值类型为整型
typedef struct 
{
	VerTexType vexs[MVNum];//顶点表
	ArcType arcs[MVNum][MVNum];//邻接矩阵
	int vexnum,arcnum;//图的当前点数和边数
}AMGraph;

int LocateVex(AMGraph G,VerTexType v)//确定顶点在G中的位置,返回顶点数组的下标
{
	for(int i = 0; i < G.vexnum; i++)
		if(v == G.vexs[i])return i;
	return -1;
}

void CreateUDN(AMGraph &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++)
		for(int j = 0; j < G.vexnum; j++)
			G.arcs[i][j] = MaxInt;
	for(int k = 0; k < G.arcnum; k++)
	{
		VerTexType v1,v2;
		ArcType w;
		cin >> v1 >> v2 >> w;//输入一条边依附的顶点及权值
		int i = LocateVex(G,v1);
		int j = LocateVex(G,v2);
		G.arcs[i][j] = w;
		G.arcs[j][i] = w;
	}

}

bool visited[MVNum];
void DFS_AM(AMGraph G,int v)
{
	cout << v; visited[v] = true;
	for(int w = 0; w < G.vexnum; w++)//依次检查邻接矩阵v所在的行
		if((G.arcs[v][w] != 0) && (!visited[w])) DFS_AM(G,w);
}

int main()
{

}


posted @ 2020-11-29 21:51  Steamery  阅读(120)  评论(0)    收藏  举报