还剩6页未读,继续阅读
文本内容:
#1数据构造试验之校内导游询问#includestdlib.h#includestdio.h#includeiostream.h#includestring.h#includemath.h#include stdio.h#define null0#define num20#define maxdist10000typedef struct{char data[num];int edges[num][num];}graph;void dijkstragraph g int n,int i,int d[num],int p[num]z{int s[num];int mindist,dist;intj,k,u;forj=0;jn;j++{d[j]=g.edges[i][j];sU]=0;ifd[j]maxdistd[j]!=O;PU]=ielse;p[j]=-l;s[i]=lforj=0;jn-l;j++{mindist=maxdist;u=i;fork=0;kn;k++ifs[k]==Od[k]mindist{u=k;mindist=d[k];s[u]=l;fork=0;kn;k++ifs[k]==0{dist=d[u]+g.edges[u][k];ifdistd[k]{d[k]=dist;p[k]=u;void opdijkintvO,int n,int d int p[]口,{int ipre;zfori=0;in;i++ifi!=vO{printf,,\n%dJ;pre=p[i];whilepre!=-l{printf-%d*pre*/****************************/pre=p[pre];ifd[i]==maxdist%p intf,,v--cT,vO;「printfn\tshortestway:%dn d[i];zvoid floydgraphg,intn,int d[][num],int p[][num]{int i,j,k;fori=0;in;i++forj=0;jn;j++{d[i][j]=g.edges[i][j];ifd[i][j]maxdistd[i]U]!=O;p[i]U]=jelse;P[i][j]=-1fori=0;in;i++d[i][i]=0;fork=0;kn;k++fori=0;in;i++for0=O;jn;j++ifd[i]D]d[i][k]+d[k]U];{d[i]D]=d[i][k]+d[k][j];p[i][j]=p[i][k]void opfloyintn,int d[][num],int path[][num]{int i,j,next;fori=0;in;i++{printf\n\nyuandian isv%d:i;zforj=0;jn;j++ifj!=l{printf\nthe shortestway from%dto%dis:\n,i,j;printf%d i;znext=path口皿;whilenext!=-l{printf-%d,next;next=path[next][j];ifd[i][j]==maxdist;printfC\t%d d[i]U]void mainz{graphg;int i,j,k,n;int d[num],p[num],sd[num][num]sp[num][num];z//clrscr;n=ll;g.data
[0]=a;g.data[l]=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]=T;g.data
[9]=j;g.data
[10]=k;fori=0;in;i++forj=0;jn;j++g.edges[i][j]=maxdist;forj=0;jn;j++g.edges[i][j]=O;g.edges
[0]
[2]=30;g.cdgcs
[0]
[5]=40;g.edges
[0][l]=20;g.edges[l]
[5]=60;g.edges[l]
[4]=40;g.edges[l]
[6]=30;g.edges
[2]
[3]=35;g.edges
[2]
[7]=40;g.edges
[3]
[10]=20;g.edges
[3]
[8]=15;g.edges
[4]
[9]=30;g.edges
[4]
[8]=35;g.edges
[4]
[10]=10;g.edges
[5]
[10]=10;g.edges
[5]
[8]=45;g.edges
[5]
[2]=20;g.edges
[6]
[0]=70;g.edges
[7]
[0]=50;g.edges
[8]
[9]=20;g.edges
[9][l]=55;g.edges
[10]
[0]=125;//clrscr;・・printf\t-WELCOME TOUUSE GUIDE!!\n“;*\nn;\n;printf\t*\tINFOMATION-i\tVISIT-v\t\t*\n\t*\t ABOUTME-a\tQUIT-q\t\t*\n;printf”\t*\t\t\t\t\t*\n\t*\t\t\t\t\t*\n\t*\t\t\t\n\t*\t\t\\t*\n\t*\t\t\t\t\t*\n“;、母*母nrinrt rn•、不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不、printf\t*PLEASE ENTERAN ORDER:i vm q\t*\n;printf\t*CLEAR THESCREEN:c\t\t3\t*\nn;;printf\t*do{/*getst;*/switchgetchar{\ncasea:{;printfNAME:******CLASS:02computer3\n printfPRIVATEEMAIL:\n;}break;/*caseg:{FILE*tp;*//*break;*/caseT:{FILE*tp;char ch;iftp=fopen,d:\\info.txt,,,rt==null{printf”\ncant open!;gctchar;exitl;ch=fgetctp;whilech!=EOF{putcharch;ch=fgetctp;fclosetp;}break;casec:break;casev:{do{printf\nINPUT JIEDIAN0-10:\n;scanfC%di;z{dijkstrag,nj,d,p;printfH\n\nyuandian isv%d:,i;opdijki,n,d,p;}whilel;break;default:exitl;}whilegetchar;getchar;*--------------------校内导游系统-------------------*/#includestdio.h#includeprocess.h#define INT_MAX1000000#define n10〃边的值int cost[n][n];两点间的最短距离int shortest〃经过的景点的;int path[n][n];void floyed;int displayint i,int j;void introduce//introduce ofthe palce{int a;凯旋门图书馆行政楼printfPlace1:\n;printfPlace2:\n;printfPlace3:\n”;printfPlace4:翱翔门\n;printfHPlace5:大广场\n;printfHPlace6:ABC教学楼\n“;printfHPlace7:体育场\n;printfnPlace8:月亮湾\rT;printfuPlace9:English Coner\nH;printfPlace10:树人广场\n”;do{“您想查询哪个景点的具体信息请输入景点编号:“;printfscanf”%d”,a;getchar;switchacase1:printf”Place1introduce:凯旋门\n凯旋门-学校北大门,风景秀丽\n学校重要的交通枢纽\n\nH;break;图书馆图书馆--学校信息资源中心,建筑格式新异下沙最大的图书馆适合学生自习学printfPlace2introduce:\n\n习\n\n;break;行政楼行政楼--学校行政中心,是学校标记性的建筑在楼顶上可以俯瞰学校全景printfPlace3introduce:\n\n\n\nH;break;printfnPlace4introduce:翱翔门\n翱翔门--学校另一个标记性建筑,象雄鹰展翅W;break;printfPlace5introduce:大广场\n大广场一学校最大的广场,建筑风格意外显明,\n\nu;break;教学楼学校唯一三幢连者着的教学楼建筑风格独特很便利学生printfPlace6introduce:ABC\n-\n\n\n;break;体育场学生运动的好去处,设施齐全风景独特printf”Place7introduce:\n--\n\n\n;break;printfPlace8introduce:月亮湾\n月亮湾--休息的好去处\n视野开广,风景意外啊!\n\nn;break;学习英语的好去处printfPlace9introduce:English Coner\n\n\n\n”;break;printfHPlace10introduce:树人广场\n树人广场■■休息学习的好去处也是观光的好地方\n\n;break;default:printfError Input\nNo Place!\n\nn;break;}whilea0||a=ll;〃要查找的两景点的距离void shortestdistance{inti,j;请输入要查询的两个景点的编号用、间隔:printf\n”;scanfn%d,%dn,i,j;whilein||i=0|tjn|[j0{printfError错误!Error Code%d,%d\n\n\n,i,j;printf”请输入要查询的两个景点的编号用?间隔:\n”;scanfH%d,%d;i,j;floyed;displayi,j;〃用算法求两个景点的最短路径void floyedfloyedint i,j,k;fori=l;i=n;i++forj=l;j=n;j++{shortestfi][j]=costfi11j|;path[i][j]=O;fork=l;k=n;k++fori=l;i=n;i++forj=l;j=n;j++ifshortest[i][j]shortest[i][k]+shortest[k][j]{〃用记录从至叮的最短路径上点的前驱景点的序号;path[][]i jshortesti11j]=shortest[i]|k]+shortest[k||j|;path[i][j]=k;path[j][i]=k;〃打印两个景点的路径及最短距离}/*floyed*/int displayinti,int j{int a,b;a=i;b=j;printf您要查询的两景点间最短路径是:\n”;ifshortest[i][j]!=INT_MAX{ifij{printfnPalce%d,b;whilepath[i][j]!=〃把i到j的路径上全部经过的景点按逆序打印出来{printfH-Palce%dn,path[i][j];j=path[i]fj];elsei=path[j][i];printf-Palce%du,a;printfu\nH;最短距离是:%米printfPalce%d-Palce%d5d”,a,b,shortest[a][b];Jelse{printfHPalce%dn,a;〃把至的路径上全部经过的景点按依次打印出来whilepath[i][j]!=O ilj jprintf,,-Palce%d,,,path[i][j];ifijj=path[i][j];elsei=path[j][i];printf,-Palce%d,1,b;printf,,\nH;最短距离是:%米”,printfPalce%d-Palce%d5d a,b,shortest|a][b];else printfError!There isno way!;printf\n\n\n\nn;return1;}/display*/void main{inti,j;char k;fori=0;i=n;i++forj=0;j=n;j++cost[i][j]=INT_MAX;cost[l]
[2]=36;cost
[2][l]=36;costfl]
[5]=36;cost
[5][l]=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⑷⑸=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;costl9]
[7]=32;cost
[8]
[7]=28;cost
[7]
[8]=28;cost[l][l]=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;whilel{printfn欢送运用校内导游查询系统!--------------------\nH;printf”l.景点信息查询请按s键\n”;print.景点最短路径查询...请按b键\n”;printf”
3.退出系统请按e键\n;”校内平面图如下printf:\nprintf5--------9----7-——8\nH;printfn|\\|/\nn;printfu I4|/\n;printf|\\|/\nH;printf12-3—6\n;printfn|/\nn;printfn|/\nn;printfn10\n\nH;请选择效劳printf:;scanf\n%c”,k;进入景点信息查询:进入最短路径查switchk cases:printf\n”;introduce;break;case b:printf询:\n;shortestdistance;break;case e:exitO;default:printfHError InputXn请输入字母s或b或e.\n\n;break;。
个人认证
优秀文档
获得点赞 0