} }
void Information(int i)/*景点介绍*/ {
switch(i) {
case 1:
printf(\校史馆:华农校史档案保存的地方。为原来华南农学院地址,建筑中西结合,每届毕业班照相处。\\n\\n\ case 2:
printf(\红满堂为白色圆顶建筑,外观华美。日常重要报告召开地。\\n\\n\ case 3:
printf(\行政楼:为学校日常事务办公点,外观壮丽,是华农的标志性建筑。 \\n\\n\ case 4:
printf(\西园:坐落华山学生区。分为三层,第一层和第二层为学生餐厅,第三层为自助餐。\\n\\n\ case 5:
printf(\东区运动场:是华农全校最大设施最先进齐全的运动场,平时各类体育比赛都在这里进行。\\n\\n\ case 6:
printf(\树木园:面积宽广,里面有众多珍贵树种。\\n\\n\ case 7:
printf(\竹园:校内高档宾馆,为外校嘉宾专设住宿。\\n\\n\ case 8:
printf(\新校门:华农百年校庆时建立,牌坊建筑。。\\n\\n\ case 9:
printf(\老校门:在地铁口附件,是华农重要标志之一。\\n\\n\\n\ case 10:
printf(\黑山运动场:面积不大,为研究生和老师而设立的运动场。\\n\\n\ default:
printf(\景点编号输入错误!请输入1->10的数字编号!\\n\\n\break; } }
void travgraph(vexnode g[],int n,adjmax adj) //查找指定景点信息 {
int i = 1,flag = 1,len; char ch;
printf(\请输入您要查询的景点序号:、\\n\\n\
printf(\校史馆 2.红满堂 3.行政楼 4.西园 5.东区运动场
13
\\n\
printf(\树木园 7.竹园 8.新校门 9.老校门 10.黑山运动场\\n\
printf(\你的选择是\ scanf(\ getchar();
printf(\此景点的名称是:\ Name(len);
printf(\此景点的介绍是:\ Information(len); do{
printf(\是否继续? Y/N \\n\ printf(\你的选择是:\ scanf(\ getchar();
if(ch == 'Y' || ch == 'y') {
clrscr(); flag = 1; i = 1;
printf(\请再次输入您要查询的景点序号:\\n\\n\
printf(\校史馆 2.红满堂 3.行政楼 4.西园 5.东区运动场\\n\
printf(\树木园 7.竹园 8.新校门 9.老校门 10.黑山运动场\\n\
printf(\你的选择是\ scanf(\ getchar();
printf(\此景点的名称是:\ Name(len);
printf(\此景点的介绍是:\ Information(len); continue ; } else
{ flag = 0;
printf(\请再次按回车键或者任意键加回车键返回至主菜单\
}
break; }while(1); }
void creat(Matrix_Graph *G)
14
{
int i,j;
for(i=1;i<=N;i++) G->vexs[i]=i; for(i=1;i<=N;i++)
for(j=1;j<=N;j++) G->arcs[i][j]=0; G->arcs[1][2]=1; G->arcs[1][9]=7;
G->arcs[2][1]=1; G->arcs[2][3]=2; G->arcs[2][4]=9; G->arcs[2][9]=6;
G->arcs[3][2]=2; G->arcs[3][4]=7; G->arcs[3][7]=3; G->arcs[3][9]=4; G->arcs[3][10]=15; G->arcs[4][2]=9; G->arcs[4][3]=7;
G->arcs[4][6]=25; G->arcs[4][10]=22; G->arcs[5][6]=6; G->arcs[5][7]=18; G->arcs[5][8]=10; G->arcs[6][4]=25; G->arcs[6][5]=6; G->arcs[6][7]=2; G->arcs[6][10]=9;
G->arcs[7][6]=2; G->arcs[7][3]=3; G->arcs[7][5]=18; G->arcs[7][8]=5; G->arcs[7][10]=10; G->arcs[8][5]=10; G->arcs[8][7]=5; G->arcs[8][9]=9; G->arcs[9][1]=7; G->arcs[9][2]=6; G->arcs[9][3]=4; G->arcs[9][8]=9;
G->arcs[10][3]=15; G->arcs[10][4]=22; G->arcs[10][6]=9; G->arcs[10][7]=10; for(i=1;i<=N;i++) for(j=1;j<=N;j++)
if(G->arcs[i][j]==0) G->arcs[i][j]=MAX; }
void path(Matrix_Graph *G,int s,int e) {
int i,j,u,c=1,t,v; int r[N+1][N+1];
int T[N],flag[N],d[N]; for(i=0;i<=N;i++)
for(j=0;j<=N;j++) r[i][j]=0; for(i=1;i<=N;i++) {
T[i]=-1; flag[i]=1; d[i]=MAX; }
flag[s]=0; while(c<=N) {
15
t=MAX;
for(i=1;i<=N;i++)
if(flag[i]&&G->arcs[s][i] t=G->arcs[s][i];v=i;r[v][1]=v;} for(i=1;i<=c;i++) for(j=1;j<=N;j++) if(flag[j]&&d[i]+G->arcs[T[i]][j] t=d[i]+G->arcs[T[i]][j];v=j; if(r[v][0]!=-1) { u=1; while(r[T[i]][u]!=0) { r[v][u]=r[T[i]][u];u++;} } r[v][u]=v; } r[v][0]=-1; T[c]=v; flag[v]=0; d[c]=t; c++; } printf(\最短路径是以下这条:\\n(%d)\ j=1; while(r[e][j]!=0) { printf(\ printf(\} int main() { int i,j; Matrix_Graph G; creat(&G); int n = 0; vexnode g[MAX]; EdgeType e[MAXedg]; adjmax adj; char choice = 'x'; while(1) 16 { clrscr(); printf(\校-园-导-游***\ printf(\ printf(\华农校园地图:\\n\\n\ printf(\华农景点信息:\\n\\n\ printf(\查找两点间最短路径:\\n\\n\ printf(\退出\\n\\n\ printf(\ printf(\华南农业大学校训:修德 博学 求实 创新\\n\ printf(\ printf(\请输入你的选择(0-3): \ choice = getchar(); switch(choice) { case '1': clrscr(); printf(\华-----农-----地-----图-----\\n\\n\ printf(\西园> . . . . . . . . . . <10.黑山运动场>\\n\ printf(\. . \\n\ printf(\. . \\n\ printf(\ . \\n\ printf(\ . \\n\ printf(\. . \\n\ printf(\校史馆>...<2.红满堂>..<3.行政楼> . . \\n\ printf(\<6.树木园> \\n\ printf(\. . \\n\ 17

