《校園導(dǎo)航系統(tǒng)的兩個代碼.doc》由會員分享,可在線閱讀,更多相關(guān)《校園導(dǎo)航系統(tǒng)的兩個代碼.doc(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
#1 數(shù)據(jù)結(jié)構(gòu)實驗之校園導(dǎo)游咨詢
#include
#include
#include
#include
#include
#include"stdio.h"
#define null 0
#define num20
#define maxdist 10000
typedefstruct{
char data[num];
int edges[num][num];
}graph;
void dijkstra(graph g,int n,int i,int d[num],int p[num])
{int s[num];
int mindist,dist;
int j,k,u;
for(j=0;jd[i][k]+d[k][j])
{d[i][j]=d[i][k]+d[k][j] ;
p[i][j]=p[i][k];
}
}
void opfloy(int n,int d[][num],int path[][num])
{int i,j,next;
for(i=0;i%d",next);
next=path[next][j];
}
if(d[i][j]==maxdist)
printf("<-%d",j);/***************************/
printf("\t%d",d[i][j]);
}
}
}
void main()
{graph g;
int i,j,k,n;
int d[num],p[num],sd[num][num],sp[num][num];
//clrscr();
n=11;
g.data[0]=a;
g.data[1]=b;
g.data[2]=c;
g.data[3]=d;
g.data[4]=e;
g.data[5]=f;
g.data[6]=g;
g.data[7]=h;
g.data[8]=i;
g.data[9]=j;
g.data[10]=k;
for(i=0;i
#include
#define INT_MAX 1000000
#define n 10
int cost[n][n];//邊的值
int shortest[n][n];//兩點間的最短距離
int path[n][n];//經(jīng)過的景點的;
void floyed();
int display(int i,int j);
void introduce()//introduce of the palce
{ int a;
printf("Place 1:凱旋門\n"); printf("Place 2:圖書館\n"); printf("Place 3:行政樓\n");
printf("Place 4:飛翔門\n"); printf("Place 5:大廣場\n");
printf("Place 6:ABC教學(xué)樓\n"); printf("Place 7:體育場\n");
printf("Place 8:月亮灣\n"); printf("Place 9:English Coner\n");
printf("Place 10:樹人廣場\n");
do{
printf("您想查詢哪個景點的詳細(xì)信息?請輸入景點編號:");
scanf("%d",&a);
getchar();
switch(a)
{
case 1:
printf("Place 1 introduce:凱旋門\n凱旋門--學(xué)校北大門,風(fēng)景秀麗。\n學(xué)校重要的交通樞紐。\n\n");break;
case 2:
printf("Place 2 introduce:圖書館\n圖書館--學(xué)校信息資源中心,建筑格式新異下沙最大的圖書館\n適合學(xué)生自習(xí)學(xué)習(xí)。\n\n");break;
case 3:
printf("Place 3 introduce:行政樓\n行政樓--學(xué)校行政中心,是學(xué)校標(biāo)志性的建筑。\n在樓頂上可以俯瞰學(xué)校全景。\n\n");break;
case 4:
printf("Place 4 introduce:飛翔門\n飛翔門--學(xué)校另一個標(biāo)志性建筑,象雄鷹展翅。\n\n");break;
case 5:
printf("Place 5 introduce:大廣場\n大廣場--學(xué)校最大的廣場,建筑風(fēng)格意外鮮明,\n\n");break;
case 6:
printf("Place 6 introduce:ABC教學(xué)樓\n--學(xué)校唯一三幢連者著的教學(xué)樓\n建筑風(fēng)格獨特很方便學(xué)生。\n\n");break;
case 7:
printf("Place 7 introduce:體育場\n--學(xué)生運動的好去處,設(shè)施齊全。\n風(fēng)景獨特。\n\n");break;
case 8:
printf("Place 8 introduce:月亮灣\n月亮灣--休息的好去處\n視野開廣,風(fēng)景意外啊!\n\n");break;
case 9:
printf("Place 9 introduce:English Coner\n學(xué)習(xí)英語的好去處\n\n\n");break;
case 10:
printf("Place 10 introduce:樹人廣場\n樹人廣場--休息學(xué)習(xí)的好去處也是觀光的好地方\n\n");break;
default: printf("Error Input\nNo Place!\n\n"); break;
}
}while(a<0||a>=11);
}
void shortestdistance() //要查找的兩景點的距離
{ int i,j;
printf("請輸入要查詢的兩個景點的編號(用,間隔):\n");
scanf("%d,%d",&i,&j);
while(i>n||i<=0||j>n||j<0)
{ printf("Error(錯誤)!Error Code:%d,%d\n\n\n",i,j);
printf("請輸入要查詢的兩個景點的編號(用,間隔):\n");
scanf("%d,%d",&i,&j);
}
floyed();
display(i,j);
}
void floyed()//用floyed算法求兩個景點的最短路徑
{
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{ shortest[i][j]=cost[i][j];
path[i][j]=0;
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(shortest[i][j]>(shortest[i][k]+shortest[k][j]))
{//用path[][]記錄從i到j(luò)的最短路徑上點j的前驅(qū)景點的序號;
shortest[i][j]=shortest[i][k]+shortest[k][j];
path[i][j]=k;path[j][i]=k;
}
}/* floyed*/
int display(int i,int j)//打印兩個景點的路徑及最短距離
{int a,b;a=i;b=j;
printf("您要查詢的兩景點間最短路徑是:\n");
if (shortest[i][j]!=INT_MAX)
{if(iPalce%d)最短距離是:%5d米",a,b,shortest[a][b]);
}else
{ printf("Palce%d",a);
while(path[i][j]!=0)//把i到j(luò)的路徑上所有經(jīng)過的景點按順序打印出來
{
printf("->Palce%d",path[i][j]);
if(iPalce%d",b);
printf("\n");
printf("(Palce%d->Palce%d)最短距離是:%5d米",a,b,shortest[a][b]);
}
}
else printf("Error!There is no way!");
printf("\n\n\n\n");
return 1;
} /*display*/
void main()
{ int i,j;
char k;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
cost[i][j]=INT_MAX;
cost[1][2]=36; cost[2][1]=36;
cost[1][5]=36; cost[5][1]=36;
cost[2][3]=24; cost[3][2]=24;
cost[2][4]=12; cost[4][2]=12;
cost[3][10]=19; cost[10][3]=19;
cost[4][5]=12; cost[5][4]=12;
cost[5][9]=34; cost[9][5]=34;
cost[6][7]=24; cost[7][6]=24;
cost[6][8]=25; cost[8][6]=25;
cost[6][10]=20; cost[10][6]=20;
cost[6][3]=17; cost[3][6]=17;
cost[7][9]=32; cost[9][7]=32;
cost[8][7]=28; cost[7][8]=28;
cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0;
cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;
while(1){
printf("---------歡迎使用校園導(dǎo)游查詢系統(tǒng)!---------\n");
printf("1.景點信息查詢………請按s鍵\n");
printf("2.景點最短路徑查詢…請按b鍵\n");
printf("3.退出系統(tǒng)……………請按e鍵\n");
printf("校園平面圖如下:\n");
printf(" 5------9-----7----8 \n");
printf(" | \\ | / \n");
printf(" | 4 | / \n");
printf(" | \\ | / \n");
printf(" 1-----2---3--6 \n");
printf(" | / \n");
printf(" | / \n");
printf(" 10 \n\n");
printf("請選擇服務(wù):");scanf("\n%c",&k);
switch(k)
{
case s:printf("進入景點信息查詢:\n");introduce();break;
case b: printf("進入最短路徑查詢:\n");shortestdistance();break;
case e:exit(0);
default:printf("Error Input\n請輸入字母s或b或e.\n\n");break;
}
}
}
鏈接地址:http://m.zhongcaozhi.com.cn/p-9356749.html