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

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

?? 校園導游系統(tǒng).cpp

?? [實驗目的] 1. 熟悉圖的存儲結構 2. 掌握圖的最短路徑算法 [實驗內容]   用無向網(wǎng)表示學校的校園景點平面圖
?? CPP
字號:
#include<stdio.h>
#include<malloc.h>
#include<ctype.h>
#define VEXNUM 7
#define LEN 300
#define INF 256    //INF表無窮
typedef int AdjType;
struct VexType{
      char num[2];      //景點編號
	  char name[20];    //景點名稱
      char info[100];    //景點介紹
};
typedef struct GraphMatrix{
	  int vexnum;           //圖的頂點個數(shù)
	  VexType *vexs;   //頂點信息
	  AdjType **arcs; //邊信息,存放邊長
}*pGraphMatrix;
struct Edge{
	int start_vex,stop_vex;
	AdjType w;
};
typedef struct Path{
	AdjType length;
	int prevex;
}*PPath;
//****讀取介紹****
VexType *creat_infos(int n)//各結點的信息
{
    int i;
	VexType* infos=(VexType *)malloc(sizeof(VexType)*n);
	if(!infos)
		printf("分配內存失敗!");		
	FILE *fp=fopen("信息.txt","r");
    for(i=0;i<n;i++)
	   fscanf(fp,"%s%s",infos[i].num,infos[i].name);      
	fclose(fp);
	printf("\n");
	return infos;
}
void create_graph(pGraphMatrix g)//****建圖****
{
	int i,j;
	if(!g)printf("分配內存失敗!");
    FILE *fp=fopen("vexs.txt","r");
	g->vexnum=VEXNUM;
	g->vexs=creat_infos(g->vexnum);//創(chuàng)建結點信息
    
	g->arcs=(AdjType **)malloc(sizeof(AdjType*)*g->vexnum);//創(chuàng)建關系矩陣
	for(i=0;i<g->vexnum;i++)
	{
		g->arcs[i]=(AdjType *)malloc(sizeof(AdjType)*g->vexnum);
	    for(j=0;j<g->vexnum;j++)
		{
	        g->arcs[i][j]=0;
			fscanf(fp,"%d",&g->arcs[i][j]);
		}
	}putchar('\n');
    fclose(fp);
}
//****求最小生成樹****
void prim(pGraphMatrix g,Edge* mst)
{
	int i,j,min,vx,vy,s,n;
	int w,minw;char ch;
	Edge edge;

	printf("請輸入您想要的起始點(A/a,B/b,C/c,D/d,E/e,F(xiàn)/f,G/g):");scanf("%c",&ch);	
    if(ch<=103&&ch>=97)s=ch-97;
	else if(ch<=71&&ch>=65)s=ch-65; else printf("輸入錯誤!\n");
	
	for(i=0;i<g->vexnum;i++)mst[i].w=0;
	j=0; //引入j 
	for(i=0;i<g->vexnum;i++)//初始化mst
 	    if(s==i)continue;
		else {
			n=j++;
			mst[n].start_vex=s;
            mst[n].stop_vex=i;
            mst[n].w=g->arcs[s][i];
		}

	for(i=0;i<g->vexnum-1;i++)//求n-1條邊
	{
		minw=INF;min=i;
		for(j=i;j<g->vexnum-1;j++)
			if(mst[j].w<minw)//從(vx,vy)(vx在U中,vy在V-U中)中選出最短的邊
			{
				minw=mst[j].w;  min=j;
			}
			edge=mst[min];  mst[min]=mst[i];  mst[i]=edge;//第i條邊與最短的邊交換,把小的值往前移
			vx=mst[i].stop_vex;//加入新結點vx

			for(j=i+1;j<g->vexnum-1;j++)
				//調整mst[i+1]到mst[n-1],看以新所向所向插入的結點為中點的路徑長度是否比原來的短
			{
				vy=mst[j].stop_vex;  w=g->arcs[vx][vy];
				if(w<mst[j].w) { mst[j].w=w; mst[j].start_vex=vx; }//start_vex指直接的起點
			}
	}
}
//****求最短路徑****
void dijkstra(pGraphMatrix g,PPath dist,int s)//S也是從0開始
{
	int i,j,min;
	AdjType minw;
    
	dist[s].length=0;dist[s].prevex=s;g->arcs[s][s]=1;//以輸入的點為起點已經(jīng)在集合U中

	for(i=0;i<g->vexnum;i++)//初始化V-U集合中頂點的距離值
	{
		if(i==s)continue;
		else{
		dist[i].length=g->arcs[s][i];
		if(dist[i].length!=INF)dist[i].prevex=s;
		else dist[i].prevex=-1; 
		}
	}

	for(i=0;i<g->vexnum;i++)//????
	{
		minw=INF;min=s;

		for(j=0;j<g->vexnum;j++)
			if(g->arcs[j][j]==0 && dist[j].length<minw)//選出距離值最小的頂點 
			{ minw=dist[j].length; min=j; }
			if(min==s)break;//從VS沒有路徑到V-U中的頂點
			g->arcs[min][min]=1;//集合V-U中路徑最小的頂點為MIN,用1標記其已選入

			for(j=0;j<g->vexnum;j++)//調整集合V-U中頂點的最短路徑
			{
				if(g->arcs[j][j]==1)continue;
				if(dist[j].length>dist[min].length+g->arcs[min][j])
				{
					dist[j].length=dist[min].length+g->arcs[min][j];//以加入的點為中點
					dist[j].prevex=min;
				}
			}
	}
}
//****輸出****
void ouput_mst(pGraphMatrix g,Edge* mst,int n)//輸出最短周游路徑  
{
	int i; char c1,c2;
	printf("\n從指定點為起點的最佳周游方案如下:\n");
	for(i=0;i<n-1;i++)
	{
		c1=65+mst[i].start_vex;c2=mst[i].stop_vex+65;
       printf("\n %c(%s)-->%c(%s)路程為:%d00米\n",c1,g->vexs[mst[i].start_vex].name,c2,g->vexs[mst[i].stop_vex].name,mst[i].w);
	 }
}
void ouput_dist(pGraphMatrix g,PPath dist)//輸出任兩點間的最短路徑 printf("fugsfduhg");
{
	int i,s,e,num=0,path[7];//S表起點下標,E表終點下標
    char ch1,ch2;

	printf("\n請輸入您想要的起始點(A/a,B/b,C/c,D/d,E/e,F(xiàn)/f,G/g):\n");scanf("%c",&ch1);//輸入起點
	scanf("%c",&ch2);
    printf("請輸入您想要到的景點(A/a,B/b,C/c,D/d,E/e,F(xiàn)/f,G/g):\n");scanf("%c",&ch2);//輸入終點
    if(ch1<=103&&ch1>=97)s=ch1-97;
	else if(ch1<=71&&ch1>=65)s=ch1-65; 
	else printf("輸入錯誤!\n"); e=s+ch2-ch1;

    dijkstra(g,dist,s);
    //****輸出路徑****
	if(dist[e].length>=256)printf("無法到達目的地!");
	else {printf("從 %s(%s)到 %s(%s)的最短路程為:%d00米,具體路徑如下:\n\n",
		g->vexs[s].num,g->vexs[s].name,g->vexs[e].num,g->vexs[e].name,dist[e].length);
	
	for(i=0;i<g->vexnum;i++)//得到路徑的逆序
		path[i]=-1;
	for(i=g->vexnum-1;i>=0&&e!=dist[e].prevex;i--)
	{
		path[i]=e;
		e=dist[e].prevex;
	}   path[i]=s;

  for(i=0;i<g->vexnum-1;i++)
	{
	   if(path[i]==-1)continue;
		  else{ ch1=path[i]+65;
		   printf("%c (%s)--> ",ch1,g->vexs[path[i]].name);
		  }
		  num++;if(num%4==0)putchar('\n');
	}
	   ch1=path[i]+65;
    printf("%c (%s)",ch1,g->vexs[path[i]].name);
	putchar('\n');
	}
}
void output_info(pGraphMatrix g)
{
	char a; int b;
printf("\nA、大禮堂 B、綜合樓 C、圖書館 D、博物館 E、課室 F、工科樓 G、辦公樓 H、返回 \n\n您想了解的景點是:\n");
getchar();     
	while(1)
	{scanf("%c",&a);toupper(a);if(a=='h'||a=='H')return;//break
	printf("\n1、英文版2、中文版 請選擇:\n");
	scanf("%d",&b);
		switch(b)
	{
		case 1:
		switch(a)
		{
		case'a':
		case'A':printf("How grand the building is.It looks so glorious in the sunshine.It is round seen from the sky.This building has three storeys.It's used for holding important meeting or celebrating important  activities.The groundfloor has a room for students learning arts.\n");break;
		case'b':
		case'B':printf("It is on the opposite side of Assembly_hal.It has five storeys.Naturally,you can see from name that it's used for all kinds of scourses.So you can go there to enjoy atmosphere of different fields of sciences,such as ChineseMedicine,Computering and so on.\n");break;
		case'c':
		case'C':printf("Look,there is an old man with the dressing of HangDynasty.Oh no,it's not a real man,it's just a sculpture.It is ZhangZhongjin,a famous Chinese doctor who wrote the book 'Shang Han Lun'.Behind it is our library,which has five floors.Thouands of books are stored there.Every day many students go here to absorb knowledge.\n");break;
		case'd':
		case'D':printf("Oh,it's the building with so many strange things.It also displays many medals won by our students and teachers.Many kinds of important creature series are kept here,including herbal medicine.\n");break;
		case'e':
		case'E':printf("The office building is administration of the college.There are 13 floors and every floor belongs to different departerment.Many important things are disposed in the building.\n");break;
		case'f':
		case'F':printf("The teaching building is very important for students.Mostly all students take classes here. The building consists of District A .\n");break;
		case'g':
		case'G':printf("The engineering building is the network center of the college. \n");break;
		};break;
		case 2:
        switch(a)
		{
		case'a':
		case'A':printf("大禮堂是一座雄偉的圓形建筑.這個建筑有三層,通常用來舉行一些重大的會議或者慶祝活動.底層有一個寬敞的大廳可以供一些學生練習音樂舞蹈什么的.\n");break;
		case'b':
		case'B':printf("綜合樓在禮堂對面,它有五層樓.從它的名字你可以很自然的知道在這棟樓開設了各種各樣的課程,你可以在其中感受到各種不同學科的氛圍.\n");break;
		case'c':
		case'C':printf("圖書館前面的雕像是漢代的名醫(yī)張仲景,他寫的<<傷寒論>>是經(jīng)典醫(yī)學名篇.圖書館有五層,藏書豐富,但多為醫(yī)藥類書籍.\n");break;
		case'd':
		case'D':printf("博物館,也許名不副實.當然,我們太少去參觀了.據(jù)說陳列了許多藥材,有名貴的,稀奇古怪的,也有常規(guī)藥材.\n");break;
		case'e':
		case'E':printf("辦公樓學校的行政部門所在地,它有13層樓,每一層都分屬不同的部門.學校諸多重大的事情都是在這里處理的.\n");break;
		case'f':
		case'F':printf("教學樓是學生上課的重要場所,分A、B區(qū)。\n");break;
		case'g':
		case'G':printf("工科樓是學校的網(wǎng)絡中心。\n");break;
		}
		}printf("\nA、大禮堂  B、綜合樓  C、圖書館  D、博物館  E、課室  F、工科樓  G、辦公樓H、返回 \n您想了解的景點是:\n");
     scanf("%c",&a);toupper(a);
	}
}
void main()
{
	int i;
	pGraphMatrix g;    g=(pGraphMatrix)malloc(sizeof(GraphMatrix));//初始化
	PPath dist;     dist=(PPath)malloc(sizeof(Path));
	Edge* mst;    mst=(Edge*)malloc(sizeof(Edge));
    
    create_graph(g);
    printf("\n****************************歡迎進入廣中醫(yī)校園導航系統(tǒng)**************************\n\n");
    while(1)
	{
		printf("\t請選擇:\n\n\t1、各景點信息查尋\t        2、總游覽路線(最短路徑)\t\n\n\t3、游覽某一景點的最短路徑\t0、退出\n");
		scanf("%d",&i); if(i==0){
			printf("\n******************************謝謝!歡迎再次使用!******************************\n");break;}
	switch(i)
	{
	case 1:output_info(g);break;
	case 2:prim(g,mst);ouput_mst(g,mst,g->vexnum);break;
	case 3:ouput_dist(g,dist);break;
	}		
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久久久久| 成人av在线一区二区三区| 狠狠色狠狠色综合系列| 成年人国产精品| 日韩一区二区在线观看视频播放| 中文字幕在线一区免费| 蜜臀a∨国产成人精品| 色狠狠色噜噜噜综合网| 久久久久国产精品人| 日本不卡一区二区| 在线亚洲高清视频| 亚洲日韩欧美一区二区在线| 国产一区二区女| 日韩一区和二区| 婷婷一区二区三区| 色欲综合视频天天天| 国产精品成人免费| 成人av网站免费| 国产亚洲精品aa午夜观看| 美日韩一区二区| 欧美一区二区视频免费观看| 亚洲综合免费观看高清完整版在线| 成人国产精品免费| 久久久www成人免费毛片麻豆| 强制捆绑调教一区二区| 欧美日韩午夜在线视频| 亚洲一区在线观看免费| 色欧美片视频在线观看| 亚洲精品国产视频| 一本色道久久综合精品竹菊| 亚洲人成伊人成综合网小说| 99久久精品免费看国产 | 国产一区啦啦啦在线观看| 欧美亚洲动漫精品| 亚洲在线一区二区三区| 欧美性受xxxx| 日韩专区中文字幕一区二区| 欧美日韩一区二区三区在线 | 在线看不卡av| 国产在线视频不卡二| 精品欧美一区二区三区精品久久 | 亚洲在线一区二区三区| 欧美综合亚洲图片综合区| 亚洲午夜免费视频| 欧美三日本三级三级在线播放| 亚洲午夜精品久久久久久久久| 欧美午夜精品久久久久久超碰| 无码av中文一区二区三区桃花岛| 884aa四虎影成人精品一区| 秋霞电影一区二区| 久久午夜老司机| 成人亚洲一区二区一| 亚洲黄色片在线观看| 欧美日本精品一区二区三区| 久久疯狂做爰流白浆xx| 欧美成人艳星乳罩| 国产成人亚洲综合a∨猫咪| 一区免费观看视频| 欧美色综合网站| 精品亚洲porn| 亚洲乱码国产乱码精品精小说 | 99精品偷自拍| 日韩中文字幕91| 国产日产亚洲精品系列| 91麻豆产精品久久久久久| 日韩激情av在线| 国产婷婷色一区二区三区四区| 99国产精品久| 日本三级韩国三级欧美三级| 国产精品情趣视频| 91精品久久久久久久91蜜桃 | 在线免费观看成人短视频| 日本麻豆一区二区三区视频| 中文字幕国产一区二区| 欧美丰满一区二区免费视频| 欧美影视一区在线| 国产成人午夜电影网| 亚洲综合视频在线| 久久久精品天堂| 欧美剧在线免费观看网站| 成人永久看片免费视频天堂| 亚洲午夜一二三区视频| 中文字幕巨乱亚洲| 欧美v亚洲v综合ⅴ国产v| 在线观看亚洲a| 成人免费视频视频| 久久99热这里只有精品| 亚洲福利视频一区二区| 中文字幕第一区综合| 精品久久久久久无| 欧美挠脚心视频网站| 91色porny在线视频| 国产成人精品网址| 免费视频最近日韩| 一区二区三区四区视频精品免费| 国产喂奶挤奶一区二区三区| 日韩欧美一级精品久久| 欧美色电影在线| 色婷婷av一区| 波多野结衣91| 成人午夜视频免费看| 国产精品一区二区视频| 青青草成人在线观看| 亚洲一区二区在线视频| 亚洲精品中文字幕在线观看| 国产精品久久久久桃色tv| 久久久久国产精品厨房| 久久精品一区二区三区四区| 久久综合九色欧美综合狠狠 | 中文字幕一区二区三区在线不卡 | 欧美日韩一区二区欧美激情| 91麻豆国产在线观看| 91美女片黄在线观看| 91蜜桃网址入口| 在线免费一区三区| 欧美日韩中文精品| 国产欧美一区二区精品久导航 | 91麻豆精品久久久久蜜臀| 欧美午夜电影网| 欧美日韩aaaaaa| 7878成人国产在线观看| 日韩亚洲欧美中文三级| 日韩欧美国产一区在线观看| 日韩精品一区二区三区在线| 精品久久五月天| 欧美国产综合一区二区| 亚洲日本丝袜连裤袜办公室| 洋洋成人永久网站入口| 五月婷婷另类国产| 美女一区二区视频| 国产精品99久| 91影视在线播放| 欧美日韩视频在线第一区| 日韩亚洲欧美成人一区| 久久网这里都是精品| 欧美高清一级片在线观看| 亚洲精品成人天堂一二三| 亚洲成人777| 精品一区二区三区免费毛片爱| 国产大片一区二区| 91麻豆福利精品推荐| 欧美精品电影在线播放| 国产亚洲精品aa午夜观看| 亚洲欧美激情小说另类| 日韩精品1区2区3区| 国产精品99久久久久久宅男| 91久久奴性调教| 日韩免费电影一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲综合精品久久| 国产精品资源网站| 在线看日本不卡| 久久精品欧美一区二区三区麻豆| 亚洲情趣在线观看| av在线播放一区二区三区| 欧美性感一类影片在线播放| 精品精品国产高清a毛片牛牛| 成人免费在线观看入口| 卡一卡二国产精品| 91老师国产黑色丝袜在线| 精品久久久久久综合日本欧美| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产精品卡一卡二卡三| 日韩中文字幕av电影| 99re视频精品| 欧美精品一区二区三区一线天视频| 亚洲欧美日韩中文播放 | 色狠狠一区二区三区香蕉| 精品久久久久久综合日本欧美| 亚洲色图19p| 懂色av一区二区在线播放| 欧美一区二区三区免费| 夜夜嗨av一区二区三区四季av| 成人污视频在线观看| 日韩免费高清av| 日韩精品电影在线观看| 91黄色激情网站| 国产精品第13页| 国产成人精品www牛牛影视| 欧美一区二区福利视频| 亚洲午夜激情av| 色哟哟日韩精品| 亚洲欧美在线高清| 成人自拍视频在线观看| 久久精品一级爱片| 久久精品国产亚洲5555| 宅男噜噜噜66一区二区66| 亚洲成人在线网站| 欧美特级限制片免费在线观看| 亚洲欧美在线高清| 99久久免费精品| 自拍av一区二区三区| 成人97人人超碰人人99| 中文一区在线播放| 粉嫩欧美一区二区三区高清影视| 精品嫩草影院久久| 国产美女视频91| 欧美国产日产图区| 不卡免费追剧大全电视剧网站| 国产精品天干天干在线综合|