亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graph.cpp

?? 圖的最短路徑查詢
?? CPP
字號:
//圖類的實現文件

#include "graph.h"
#include <climits>

//構造函數
graph::graph()
{
	n=0;
	edgelist=NULL;
	vexlist=NULL;
}

//析構函數,用于釋放分配的內存空間
graph::~graph()
{
	int i;
	for(i=0;i<n;i++)
		delete[] edgelist[i];
	delete[] edgelist;
}

//數據讀取函數,內部函數,用于從數據文件中讀取路徑數據存入數組中
bool graph::readdata(string filename)
{
	int i,j;
	string tname1,tname2;
	int tweight,tprice;
	ifstream datafile;
	datafile.open(filename.c_str());
	datafile>>n;

	//分配內存空間	
	vexlist=new vexnode[n];
	edgelist=new edgenode*[n];
	for(i=0;i<n;i++)
	{
		edgelist[i]=new edgenode[n];
		for(j=0;j<n;j++)
		{
			if(i==j)
			{
				edgelist[i][j].weight=-1;
				edgelist[i][j].price=-1;
			}
			else
			{
				edgelist[i][j].weight=INT_MAX;
				edgelist[i][j].price=INT_MAX;
			}
			edgelist[i][j].pin=-1;
			edgelist[i][j].win=-1;
		}
	}

	//讀取地名信息
	for(i=0;i<n;i++)
		datafile>>vexlist[i].name;

	//讀取路徑信息--距離,路費
	while(1)
	{
		datafile>>tname1>>tname2>>tweight>>tprice;
		datafile.ignore(1000,'\n');
		if(!datafile) break;
		for(i=0;i<n&&tname1!=vexlist[i].name;i++);
		for(j=0;j<n&&tname2!=vexlist[j].name;j++);
		edgelist[i][j].win=i;
		edgelist[i][j].pin=i;
		edgelist[i][j].weight=tweight;
		edgelist[i][j].price=tprice;
	}
	datafile.close();
	return true;
}

//路徑矩陣的計算生成函數,用于計算每兩個地點間的路徑信息
bool graph::creatgraph(string filename)
{
	int i,j,k;
	readdata(filename);

	//計算最短路程的路徑
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(j==i) continue;
			for(k=0;k<n;k++)
			{
				if(k==i||k==j) continue;
				if(edgelist[j][i].weight==INT_MAX||edgelist[i][k].weight==INT_MAX) continue;
				if(edgelist[j][k].weight>(edgelist[j][i].weight+edgelist[i][k].weight))
				{
					edgelist[j][k].weight=edgelist[j][i].weight+edgelist[i][k].weight;
					edgelist[j][k].win=i;
				}
			}
		}
	}

	//計算最少路費的路徑信息
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			if(j==i) continue;
			for(k=0;k<n;k++)
			{
				if(k==i||k==j) continue;
				if(edgelist[j][i].price==INT_MAX||edgelist[i][k].price==INT_MAX) continue;
				if(edgelist[j][k].price>(edgelist[j][i].price+edgelist[i][k].price))
				{
					edgelist[j][k].price=edgelist[j][i].price+edgelist[i][k].price;
					edgelist[j][k].pin=i;
				}
			}
		}
	}

	return true;
}

//查詢函數,用于兩地間路徑的輸出
bool graph::search(string start,string end)
{
	int i,j,tag;
	char ch;
	outlink *p,*q,*whead,*t,*phead;

	//特殊情況判斷
	if(start==end)
	{
		cout<<"一個城市,打的去吧!!"<<endl;
		ch=getch();
		return false;
	}
	for(i=0;i<n&&start!=vexlist[i].name;i++);
	if(i==n)
	{
		cout<<start<<"不存在!!"<<endl;
		ch=getch();
		return false;
	}
	for(j=0;j<n&&end!=vexlist[j].name;j++);
	if(j==n)
	{
		cout<<end<<"不存在!!"<<endl;
		ch=getch();
		return false;
	}
	if(edgelist[i][j].weight==INT_MAX)
	{
		cout<<start<<"與"<<end<<"之間無法到達"<<endl;
		ch=getch();
		return false;
	}

	//生成最短路程的路線表
	whead=new outlink;
	p=new outlink;
	whead->node=i;
	whead->link=p;
	p->node=j;
	p->link=NULL;

	do
	{
		p=whead;
		do
		{
			q=p;
			p=p->link;
			tag=0;
			if(edgelist[q->node][p->node].win!=q->node)
			{
				t=new outlink;
				t->node=edgelist[q->node][p->node].win;
				q->link=t;
				t->link=p;
				tag=1;
			}
			if(tag) break;
			
		}while(p->link!=NULL);
	}while(tag);

	//生成最少路費的路線表
	phead=new outlink;
	p=new outlink;
	phead->node=i;
	phead->link=p;
	p->node=j;
	p->link=NULL;

	do
	{
		p=phead;
		do
		{
			q=p;
			p=p->link;
			tag=0;
			if(edgelist[q->node][p->node].pin!=q->node)
			{
				t=new outlink;
				t->node=edgelist[q->node][p->node].pin;
				q->link=t;
				t->link=p;
				tag=1;
			}
			if(tag) break;
			
		}while(p->link!=NULL);
	}while(tag);

	//輸出結果
	system("cls");
	cout<<"查詢結果:從"<<start<<"到"<<end<<"路線為:"<<endl;
	cout<<"最短路程路線為:";
	for(p=whead;p!=NULL;p=p->link)
	{
		cout<<vexlist[p->node].name;
		if(p->link!=NULL)
			cout<<"->";
	}
	cout<<endl;
	cout<<"總路程為:"<<edgelist[i][j].weight<<endl;

	cout<<"最少路費路線為:";
	for(p=phead;p!=NULL;p=p->link)
	{
		cout<<vexlist[p->node].name;
		if(p->link!=NULL)
			cout<<"->";
	}
	cout<<endl;
	cout<<"總路費為:"<<edgelist[i][j].price<<endl;
	ch=getch();

	//釋放查詢時所用的內存空間
	for(p=phead;q!=NULL;p=q)
	{
		q=p->link;
		delete p;
	}
	for(p=whead;q!=NULL;p=q)
	{
		q=p->link;
		delete p;
	}

	return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情五月婷婷综合| 日韩中文字幕区一区有砖一区 | 国产激情视频一区二区三区欧美 | 日韩精品色哟哟| 亚洲一区二区三区自拍| 《视频一区视频二区| 中文字幕国产精品一区二区| 精品久久久久久亚洲综合网| 欧美成人精品3d动漫h| 欧美电影免费观看高清完整版| 欧美日韩不卡在线| 日韩一级精品视频在线观看| 欧美一级欧美一级在线播放| 日韩精品中文字幕在线不卡尤物| 日韩久久久久久| 久久久久久久久久看片| 中文字幕av一区 二区| 国产精品污www在线观看| 亚洲国产高清在线观看视频| 中文字幕中文字幕一区| 亚洲综合网站在线观看| 亚洲成av人片在www色猫咪| 日韩不卡一二三区| 国产一区在线观看视频| av欧美精品.com| 欧美日韩国产综合视频在线观看| 欧美一级高清片| 久久久.com| 亚洲电影激情视频网站| 日本在线播放一区二区三区| 国产精品自在在线| 色偷偷成人一区二区三区91| 欧美精品乱码久久久久久| 精品美女在线播放| 亚洲欧美偷拍卡通变态| 日韩精品久久久久久| 成人性生交大片免费看中文| 精品视频在线免费| 国产视频一区在线观看| 丝袜美腿亚洲色图| 国产成人自拍在线| 91精品婷婷国产综合久久性色 | 久久网这里都是精品| 亚洲精品久久久久久国产精华液| 日本免费新一区视频| 高清国产一区二区| 欧美一二三区在线观看| 综合久久久久综合| 久久精品国产**网站演员| av中文字幕在线不卡| 日韩精品一区二区三区在线播放 | 国产乱码精品一品二品| 91成人免费网站| 国产欧美精品日韩区二区麻豆天美| 一区二区三区免费| 成人自拍视频在线观看| 日韩精品一区二| 亚洲一区二区三区激情| 不卡的电视剧免费网站有什么| 日韩区在线观看| 亚洲最大成人网4388xx| 成人黄色一级视频| 久久色在线视频| 日本成人超碰在线观看| 在线观看91av| 亚洲午夜久久久久| 欧美在线你懂的| 日韩理论片网站| 99久久免费精品高清特色大片| 久久久久久电影| 国产美女精品一区二区三区| 欧美一二三四区在线| 日韩精品午夜视频| 欧美一区欧美二区| 日本午夜一区二区| 欧美一卡二卡三卡四卡| 日韩成人免费电影| 91麻豆精品91久久久久同性| 亚洲高清久久久| 欧美男人的天堂一二区| 亚洲一区二区三区美女| 欧美日韩视频一区二区| 亚洲国产精品视频| 欧美精品色一区二区三区| 亚洲国产成人av好男人在线观看| 91性感美女视频| 一区二区三区日韩| 欧美色窝79yyyycom| 性做久久久久久久免费看| 欧美三级日韩三级| 亚洲高清在线视频| 91精品国产综合久久久蜜臀图片 | 激情综合网天天干| 日本一区二区三区电影| 成人蜜臀av电影| 亚洲欧美电影一区二区| 欧美三级视频在线观看| 日本系列欧美系列| 欧美国产1区2区| 91老师片黄在线观看| 亚洲福利一区二区| 精品久久久久久久久久久院品网| 国产精品自拍毛片| 亚洲日本护士毛茸茸| 色一情一伦一子一伦一区| 婷婷激情综合网| 日韩欧美一区在线| 波多野结衣在线一区| 亚洲精品视频在线看| 日韩欧美在线观看一区二区三区| 成人午夜免费电影| 午夜婷婷国产麻豆精品| 久久综合999| 91日韩在线专区| 久久精品国产第一区二区三区| 欧美国产日韩亚洲一区| 欧美浪妇xxxx高跟鞋交| 国产成人8x视频一区二区| 亚洲一区二区欧美激情| 国产色产综合产在线视频| 欧美中文字幕一二三区视频| 韩国一区二区视频| 午夜视频一区二区| 中文字幕一区三区| 久久综合网色—综合色88| 91精彩视频在线观看| 国产精品正在播放| 日韩成人一区二区| 一区二区在线观看视频| 久久久久综合网| 在线成人免费观看| 色综合久久久网| 国产精品99久久久| 久久爱另类一区二区小说| 一区二区三区四区激情 | 国产亚洲va综合人人澡精品| 欧美天堂一区二区三区| 国产不卡一区视频| 久久国产欧美日韩精品| 亚洲成人一二三| 亚洲欧洲av一区二区三区久久| ww亚洲ww在线观看国产| 欧美男同性恋视频网站| 欧美在线综合视频| 一本色道久久加勒比精品| 国产精品一区不卡| 韩国成人精品a∨在线观看| 看片网站欧美日韩| 日韩激情一区二区| 天堂蜜桃一区二区三区 | 日韩高清不卡在线| 午夜精品福利视频网站| 亚洲资源中文字幕| 一个色妞综合视频在线观看| 亚洲欧洲制服丝袜| 亚洲精品免费播放| 一区二区三区 在线观看视频| 亚洲色图.com| 亚洲欧美日韩久久| 亚洲激情中文1区| 亚洲一本大道在线| 视频一区中文字幕| 蜜桃久久av一区| 美女视频黄免费的久久| 美女尤物国产一区| 国产一区在线观看视频| 国产风韵犹存在线视精品| 国产99精品在线观看| 风间由美一区二区三区在线观看 | 美日韩一区二区| 韩国欧美一区二区| 国产精品亚洲一区二区三区妖精 | 欧美三区免费完整视频在线观看| 欧美日韩高清在线播放| 欧美一区二区福利视频| 久久久美女毛片| 亚洲欧美日韩国产一区二区三区 | 91精品国产日韩91久久久久久| 91精品国产乱| 久久精品视频免费| 亚洲精品中文在线影院| 亚洲国产aⅴ成人精品无吗| 久草热8精品视频在线观看| 懂色av中文一区二区三区| 色先锋aa成人| 91精品国产高清一区二区三区| 久久亚洲精精品中文字幕早川悠里| 国产精品系列在线| 偷窥少妇高潮呻吟av久久免费| 黄一区二区三区| 91美女福利视频| 日韩精品一区二区三区中文不卡| 日本一区二区三区视频视频| 亚洲一线二线三线视频| 久久国产夜色精品鲁鲁99| 在线区一区二视频| 国产午夜精品久久久久久免费视 | 日韩午夜电影在线观看| 国产精品伦理一区二区| 日本不卡高清视频|