1. 程式人生 > 實用技巧 >鄰接矩陣表示法表示圖

鄰接矩陣表示法表示圖


#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;
	}

}

int main()
{

}