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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 圖-鄰接矩陣-最短路徑.cpp

?? 最短路徑的求取
?? CPP
字號(hào):
#include<iostream.h>

// 定義 狀態(tài)代碼 及 數(shù)據(jù)類型
#define NULL 0
#define OK 1
#define ERROR 0
#define INFINITY 255
#define MAX_VERTEX_NUM 20

typedef int Status;
typedef int ElemType;

// -----------------------  隊(duì)列結(jié)構(gòu)  -------------------------

// 節(jié)點(diǎn)存儲(chǔ)結(jié)構(gòu)
typedef struct QNode{
	ElemType data;
	struct QNode *next;
}QNode,*QueuePtr;


// 隊(duì)列
typedef struct{
	QueuePtr front;
	QueuePtr rear;
}LinkQueue;

// 初始化隊(duì)列
Status InitQueue(LinkQueue &Q){
	Q.front=Q.rear=new QNode;
	if(!Q.front) 
		return ERROR;
	Q.front->next=NULL;
	return OK;
}

// 入隊(duì)
Status EnQueue(LinkQueue &Q,ElemType e){
	QueuePtr p=NULL;
	p=new QNode;
	if(!p)
		return ERROR;
	p->data=e;
	p->next=NULL;
	Q.rear->next=p;
	Q.rear=p;
	return OK;
}

// 出隊(duì)
Status DeQueue(LinkQueue &Q,ElemType &e){
	QueuePtr p=NULL;
	if(Q.front==Q.rear)
		return ERROR;
	p=Q.front->next;
	e=p->data;
	Q.front->next=p->next;
	if(Q.rear==p)			// 注意當(dāng)出隊(duì)后為空隊(duì)的情況
		Q.rear=Q.front;
	delete p;
	return OK;
}

// 判斷是否為空隊(duì)列
Status EmptyQueue(LinkQueue &Q){
	return Q.front==Q.rear?true:false;
}

// 復(fù)制隊(duì)列(copy Q1 to Q2)
Status CopyQueue(LinkQueue &Q1,LinkQueue &Q2){
	int e;
	QueuePtr p;
	while(!EmptyQueue(Q2)){		// clean Q2
		DeQueue(Q2,e);
	}							// copy one by one
	p=Q1.front->next;
	while(p){
		e=p->data;
		p=p->next;
		EnQueue(Q2,e);
	}
	return OK;
}

// ----------------------  圖的結(jié)構(gòu):鄰接矩陣(有向網(wǎng))  --------------------------//

// 鄰接矩陣元素
typedef struct ArcCell{
	int adj;			// arc value: >0, INFINITY: no link
	char *info;			
}AcrCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

// 圖的結(jié)構(gòu)	
typedef struct{
	char vexs[MAX_VERTEX_NUM][5];		// 頂點(diǎn)數(shù)組
	AdjMatrix arcs;					// 鄰接矩陣
	int vexnum;						// 圖當(dāng)前的頂點(diǎn)數(shù)
	int arcnum;						// 圖當(dāng)前邊的個(gè)數(shù)
}MGraph;

// 建立鄰接圖(key=1為有向網(wǎng),key=0為無(wú)向網(wǎng))
Status CreateUDN(MGraph &G,int vexnum,int edgenum,char *names,char *edges,int key){
	int i,j,k,value;
	// 輸入當(dāng)前圖的頂點(diǎn)數(shù),邊個(gè)數(shù)
	G.vexnum=vexnum;
	G.arcnum=edgenum;
	// 各個(gè)頂點(diǎn)數(shù)據(jù)
	for(i=0;i<G.vexnum;++i){
		for(j=0;j<4;j++){
			G.vexs[i][j]=*names;
			names++;
		}
		G.vexs[i][4]='\0';
	}
	// 初始化鄰接矩陣(全為INFINITY)
	for(i=0;i<MAX_VERTEX_NUM;++i){
		for(j=0;j<MAX_VERTEX_NUM;++j){
			G.arcs[i][j].adj=INFINITY;
			G.arcs[i][j].info=NULL;
			
		}
	}
	// 建立鄰接矩陣每條邊的數(shù)值
	for(k=0;k<G.arcnum;++k){
		i=int(*edges)-48;
		edges++;
		j=int(*edges)-48;
		edges++;
		value=(int(*edges)-48)*10;
		edges++;
		value+=int(*edges)-48;
		edges++;
		G.arcs[i][j].adj=value;
		if(!key){
			G.arcs[j][i].adj=value;
		}
	}
	return OK;
}

// 打印出鄰接矩陣
void PrintGraph(MGraph &G){
	int i,j;
	cout<<"\n//--------------- PrintMatrix -----------------//\n\n      ";
	for(i=0;i<G.vexnum;++i){
		cout<<G.vexs[i]<<"   ";
	}
	cout<<endl;
	for(i=0;i<G.vexnum;++i){
		cout<<"\n\n"<<G.vexs[i]<<"   ";
		for(j=0;j<G.vexnum;++j){
			if(G.arcs[i][j].adj==INFINITY)
				cout<<"  /    ";
			else
				cout<<" "<<G.arcs[i][j].adj<<"    ";
		}
	}
	cout<<"\n\n//--------------- PrintMatrix -----------------//\n";
}


// ----------------------  求源點(diǎn)v0到各點(diǎn)的最短路徑  --------------------------//

void ShortestPath(MGraph &G,int v0){
	int D[MAX_VERTEX_NUM],final[MAX_VERTEX_NUM],i,w,v=0,min;
	// 建立隊(duì)列數(shù)組,用以依次儲(chǔ)存最短的路徑
	LinkQueue Q[MAX_VERTEX_NUM];
	// 初始化數(shù)組
	for(i=0;i<G.vexnum;++i){
		InitQueue(Q[i]);
		D[i]=G.arcs[v0][i].adj;
		final[i]=false;
	}
	final[v0]=true;
	// 一個(gè)一個(gè)循環(huán)找出最短距離(共vexnum-1個(gè))
	for(i=1;i<G.vexnum;++i){
		min=INFINITY;
		// 掃描找出非final集中最小的D[]
		for(w=0;w<G.vexnum;++w){
			if(!final[w] && D[w]<min){
				v=w;
				min=D[w];
			}
		}
		final[v]=true;
		// 更新各D[]數(shù)據(jù)
		for(w=0;w<G.vexnum;++w){
			if(!final[w] && G.arcs[v][w].adj+min<D[w]){
				D[w]=G.arcs[v][w].adj+min;
				CopyQueue(Q[v],Q[w]);
				EnQueue(Q[w],v);
			}
		}
	}
	// 打印出結(jié)果
	cout<<"//--------------- ShortestPath -----------------//\n\n";
	cout<<"  出發(fā)地->目的地\t最短距離\t詳細(xì)路徑\n\n";
	for(i=0;i<G.vexnum;i++){
		if(D[i]!=INFINITY){
			cout<<"  "<<G.vexs[v0]<<" -> "<<G.vexs[i]<<"\t\t"<<D[i]<<"   \t\t";
			cout<<G.vexs[v0];
			while(!EmptyQueue(Q[i])){
				DeQueue(Q[i],v);
				cout<<" -> "<<G.vexs[v];
			}
			cout<<" -> "<<G.vexs[i]<<endl;
		}else{
			cout<<"  "<<G.vexs[v0]<<" -> "<<G.vexs[i]<<"\t\tNo path!\n";
			
		}
	}
	cout<<"\n//--------------- ShortestPath -----------------//\n";
}

void PrintCity(char *names,int vexnum){
	int i,j;
	cout<<"城市列表:\n\n";
	for(i=0;i<vexnum;++i){
		cout<<" "<<i<<"-";
		for(j=0;j<4;j++){
			cout<<*names;
			names++;
		}
		cout<<" ";
	}
	cout<<"\n請(qǐng)選擇出發(fā)城市 >";
}



void main(){
	MGraph G;

	// 圖的結(jié)構(gòu)數(shù)據(jù)
	char *edges,*names;
	int vexnum,arcnum,city,kind;
	vexnum=10;
	arcnum=14;
	names="鄭州北京天津南昌上海貴陽(yáng)株洲廣州蘭州西寧";
	edges="01450235035012201591187024503450585056205750604063409835";

	
	do{
		PrintCity(names,vexnum);
		cin>>city;
		cout<<"\n\n操作:\n0-無(wú)向圖列表 1-有向圖列表\n2-無(wú)向圖矩陣  3-有向圖矩陣\n4-選擇城市 5-退出\n\n請(qǐng)選擇操作 >";
		do{
			cin>>kind;
			if(kind>=0 && kind <=3){
				CreateUDN(G,vexnum,arcnum,names,edges,kind%2);
				switch(kind/2){
				case 0:ShortestPath(G,city);
					break;
				case 1:PrintGraph(G);
					break;
				}
			}
			cout<<"\n\n操作:\n0-無(wú)向圖列表 1-有向圖列表\n2-無(wú)向圖矩陣  3-有向圖矩陣\n4-選擇城市 5-退出\n\n請(qǐng)選擇操作 >";
		}
		while(kind<4);
	}
	while(kind<5);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区导航在线播放| 精品奇米国产一区二区三区| 国产成人一级电影| 同产精品九九九| 51午夜精品国产| 久久久久久久免费视频了| 久久久精品2019中文字幕之3| 亚洲精品ww久久久久久p站| 久久99精品视频| 欧美在线观看一区二区| 久久九九99视频| 日日夜夜精品视频天天综合网| 国产精品中文有码| 色88888久久久久久影院野外| 日韩免费视频一区二区| 国产精品传媒入口麻豆| 国产自产2019最新不卡| 欧美三区在线视频| 一区二区三区中文在线| 懂色av一区二区在线播放| 日韩欧美国产午夜精品| 图片区小说区区亚洲影院| 色综合久久中文综合久久牛| 色一区在线观看| 中文字幕一区二区视频| 国产在线精品一区二区夜色| 欧洲av一区二区嗯嗯嗯啊| 亚洲欧美综合色| 亚洲va天堂va国产va久| 在线观看日韩精品| 亚洲色图一区二区| 91国产免费观看| 一区二区视频免费在线观看| 国产成人精品免费网站| 精品欧美乱码久久久久久1区2区| 日日欢夜夜爽一区| 欧美日韩一二三| 日韩av电影免费观看高清完整版 | 国产福利精品导航| 欧美国产精品专区| 经典一区二区三区| 777色狠狠一区二区三区| 蓝色福利精品导航| 久久久久97国产精华液好用吗| 欧美日韩一区二区在线观看 | 国产成人免费视| 婷婷久久综合九色国产成人| 亚洲三级免费电影| 国产精品进线69影院| 国产亚洲综合性久久久影院| 欧美本精品男人aⅴ天堂| 欧美精品在线视频| 欧美日本在线视频| 欧美日韩国产首页在线观看| 欧美日韩成人一区| 911精品产国品一二三产区| 欧美亚洲免费在线一区| 91高清视频免费看| 欧美高清视频一二三区 | 成人综合在线视频| 国产sm精品调教视频网站| 国产91精品一区二区麻豆亚洲| 国产成人鲁色资源国产91色综| 国产91精品露脸国语对白| 成人h动漫精品| 不卡的av电影| 欧美在线观看一区二区| 7777女厕盗摄久久久| 欧美v国产在线一区二区三区| 精品理论电影在线观看| 中文乱码免费一区二区| 午夜精品久久久久久久99水蜜桃| 天天综合色天天综合色h| 国产精品91一区二区| 色综合 综合色| 日韩欧美一级片| 亚洲欧美日韩一区二区| 日本最新不卡在线| 99久久精品情趣| 91精品蜜臀在线一区尤物| 国产精品嫩草影院av蜜臀| 亚洲午夜精品17c| 国产成人综合在线| 欧美久久一二区| 亚洲特黄一级片| 精品一区二区三区的国产在线播放| 91原创在线视频| 久久精品一区二区三区不卡牛牛 | 国产精品福利影院| 日本中文在线一区| 欧美日韩中文一区| 亚洲精品日韩一| 色老汉一区二区三区| 中文字幕高清不卡| 久久精品国产第一区二区三区| 91老司机福利 在线| 久久亚洲免费视频| 午夜天堂影视香蕉久久| 色婷婷精品大在线视频| 中文欧美字幕免费| 国产高清久久久| 精品国产乱码久久久久久浪潮| 亚洲高清在线精品| 在线不卡免费av| 夜夜嗨av一区二区三区四季av| 成人黄色一级视频| 国产精品天干天干在线综合| 高清av一区二区| 日韩美女视频一区| 91浏览器入口在线观看| 亚洲成人免费电影| 91精品国产日韩91久久久久久| 爽好多水快深点欧美视频| 欧美一区二区不卡视频| 国产一区二区三区四区五区入口| 欧美精品一区二区三区蜜桃| 国产黄色成人av| 亚洲综合久久久久| 精品国产网站在线观看| k8久久久一区二区三区 | 精品久久一区二区三区| 国产在线一区二区| 国产精品福利一区| 欧美一级xxx| 99精品国产91久久久久久| 日韩二区在线观看| 国产午夜一区二区三区| av一区二区三区黑人| 久久精品理论片| 亚洲欧美在线视频观看| 欧美一区二区三区免费大片| 国产成人综合亚洲网站| 日韩黄色片在线观看| 国产精品无圣光一区二区| 欧美一区二区三区四区在线观看 | 亚洲欧美偷拍另类a∨色屁股| 欧美一区二区久久久| caoporm超碰国产精品| 免费xxxx性欧美18vr| 亚洲免费观看高清完整版在线观看 | 日本亚洲视频在线| 亚洲视频中文字幕| 国产精品欧美经典| 国产亚洲一区二区三区在线观看 | 久久女同精品一区二区| 这里是久久伊人| 欧美视频精品在线| 在线亚洲一区观看| 色狠狠一区二区| 成人综合婷婷国产精品久久蜜臀 | 国产精品自拍网站| 国产美女视频一区| 美女视频黄 久久| 麻豆精品久久久| 久久99精品国产.久久久久久| 午夜国产不卡在线观看视频| 亚洲综合在线第一页| 亚洲成人免费影院| 人人精品人人爱| 精品一区免费av| 99这里只有久久精品视频| 色综合激情久久| 91精品国产综合久久久久| 久久影院电视剧免费观看| 亚洲欧美乱综合| 日本一不卡视频| 国产福利一区二区三区视频| 99久久综合99久久综合网站| 蜜桃视频在线一区| 国产91色综合久久免费分享| 日本韩国精品一区二区在线观看| 欧美视频一区二区三区在线观看| 欧美高清视频一二三区| 久久久久九九视频| 亚洲五码中文字幕| 国产精品一二三| 欧美日韩在线一区二区| 久久久99久久| 天堂在线亚洲视频| 不卡在线观看av| 欧美成人免费网站| 亚洲午夜久久久久久久久电影院 | 色综合色综合色综合| 精品三级在线看| 午夜精品一区在线观看| 99久久精品免费精品国产| 欧美日本精品一区二区三区| 国产女人18水真多18精品一级做| 亚洲综合一区二区| 波多野结衣一区二区三区| 欧美一级精品大片| 亚洲乱码日产精品bd| 国产乱人伦偷精品视频不卡| 欧美日韩国产一区| 亚洲妇女屁股眼交7| 99久久国产综合精品麻豆| 国产午夜精品久久| 日韩黄色一级片| 日韩一级黄色片| 日韩不卡手机在线v区|