公交路线查询系统(基于数据结构和C语言)_第1页
公交路线查询系统(基于数据结构和C语言)_第2页
公交路线查询系统(基于数据结构和C语言)_第3页
公交路线查询系统(基于数据结构和C语言)_第4页
公交路线查询系统(基于数据结构和C语言)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<process.h>#definemax30#definelen20#defineMAX100typedefstructLinedot{//0%intstopno;//0^°Acharstopname[max];//0^AustructLinedot*next;}linedot,*dot;typedefstructlineway{//IBA^intlineNo;//IBA^°Aintstopnum;//iAIBA^EI0^pAioEydotstop;//。%}way;typedefstructlineNode{intlinenum;//iBA^ioEywaydata[len];//IBA^}line;typedefstructco_Node{intzhanNo;intbusNo;structco_Node*next;}co_node,*co_zhan;typedefstructNode{intfirstbus;//E^^^3p°Acharstopname[max];//0^Auco_zhanzhan;}node,*list;typedefstructzhanNode{intvexnum;//^¥paEyintarcnum;//»;Eynodevexs[max];//^¥pa}spot;typedefstructsqNode//^^daE«id^OADintdata;structsqNode*prior;structsqNode*next;}sqnode,*sqlist;typedefstruct//F«Y6入入E入{sqlistfront;sqlistrear;}LQ;voidinitqueue(LQ*Q)//36E^»—^0AD{Q->front=Q->rear=newsqnode;Q->front->data=Q->rear->data=-1;Q->front->next=Q->rear->next=NULL;Q->front->prior=Q->rear->prior=NULL;}voidenqueue(LQ*Q,inte)//坯0?O{sqlistp;p=newsqnode;p->data=e;p->next=NULL;p->prior=Q->front;Q->rear->next=p;Q->rear=p;}voiddequeue(LQ*Q,int*e)//3o^0{Q->front=Q->front->next;if(Q->front!=NULL)*e=Q->front->data;else*e=-1;}typedefstructstackNode//旷帖0»{intfiguer;structstackNode*next;}stacknode,*stack;voidinitstack(stack*S)//3oE^»_0»{*S=NULL;}voidpush(stack*S,inte)//坯00»{stackp;p=newstacknode;p->figuer=e;p->next=*S;*S=p;}intpop(stack*S,int*e)//3o0»{stackp=*S;if(p==NULL){printf("0»^0!\n");return0;}*e=p->figuer;*S=(*S)->next;deletep;return1;}voidgettop(stackS,int*e)//pAp^0»^¥{if(S==NULL){printf("0»^0!\n");return;}*e=S->figuer;}intlocate(spotC,chare[]){inti;for(i=0;i<C.vexnum;i++)if(strcmp(C.vexs[i].stopname,e)==0)returni;}if(i>C.vexnum){printf("Notfound!\n");return-1;}}voidinit(FILE*fp,line*W,spot*C)//1«^»IBA^36E^»_{dotp,q;co_zhanR;inti,j,m,n,num;charvex1[max],vex2[max];if((fp=fopen("f.txt","r"))==NULL)//'6£.af瓦吻{printf("Thefileerror!\n");getchar();exit(0);}fscanf(fp,"%d",&W->linenum);for(i=0;i<W->linenum;i++)fscanf(fp,"%d%d",&W-〉data[i].lineNo,&W-〉data[i].stopnum);//E2宜GYrA•°A°「ATRA・E工for(i=0;i<W-〉linenum;i++){W-〉data[i].stop=NULL;for(j=0;j<W-〉data[i].stopnum;j++){p=newlinedot;p-〉next=NULL;fscanf(fp,"%d%s",&p->stopno,p->stopname);//EaEeO^Auq=W-〉data[i].stop;if(!q)W-〉data[i].stop=p;else{while(q-〉next)q=q-〉next;q-〉next=p;}}}}}}}fscanf(fp,"%d%d",&C->vexnum,&C->arcnum);for(i=0;i<C->vexnum;i++){fscanf(fp,"%s%d",C->vexs[i].stopname,&C->vexs[i].firstbus);C->vexs[i].zhan=NULL;}for(i=0;i<C->arcnum;i++){fscanf(fp,"%s%s%d",vex1,vex2,&num);m=locate(*C,vex1);n=locate(*C,vex2);R=newco_node;R->zhanNo=n;R->busNo=num;R->next=C->vexs[m].zhan;C->vexs[m].zhan=R;}}voidsearch1(line闪)//26氏—0$?"3卩,(卩瓦吻。(务务_。务卩直{dotp;inti,n,k=0;printf("QeEaEe3pzI:");scanf("%d",&n);for(i=0;i<W.linenum;i++){if(W.data[i].lineNo==n){p=W.data[i].stop;while(p){if(k==0)printf("%s",p_>stopname);elseprintf("_>%s",p_>stopname);p=p_>next;k++;voidsearch2(lineW,spotC){intk,i;charvex[max];dotp;printf("QeEaEeO^paAu:");scanf("%s",vex);k=locate(C,vex);if(C.vexs[k].firstbus!=0)printf("iAO^papAE^^^3pOD:%d\n",C.vexs[k].firstbus);elseprintf("iAO^I&E^^^3p!\n");printf("iAO^papA1yA^3pOD:");for(i=0;i<W.linenum;i++){p=W.data[i].stop;if(!p)continue;while(p){if(strcmp(p->stopname,vex)==0&&p!=W.data[i].stop)printf("%d",W.data[i].lineNo);p=p->next;}}}intstackempty(stackS){if(S==NULL)return1;return0;}voidupdown(stackS,stack*S1){stackp;while(!stackempty(S)){p=newstacknode;p->figuer=S->figuer;p->next=*S1;}}*S1=p;S=S->next;}}voidprintstack(spotC,stackS)//zd6jO»AipA6aE0{stackS1,p;co_zhanq;initstack(&S1);updown(S,&S1);p=S1;while(p){q=C.vexs[p->figuer].zhan;while(q){if(p->next==NULL)break;if(q->zhanNo!=p->next->figuer)q=q->next;elsebreak;}printf("%s-%d->",C.vexs[p->figuer].stopname,q->busNo);p=p->next;}}voidprintqueue(sqlistQ,spotC){sqlistp;stackS,S1;initstack(&S);initstack(&S1);p=Q;while(p->data!=-1){push(&S,p->data);p=p->prior;}updown(S,&S1);printstack(C,S1);}}voidsearch3(spotC,ints,inte){co_zhanp;intflag;LQQ;sqlistq;intu,k,i=1;initqueue(&Q);enqueue(&Q,s);while(Q.front!=Q.rear){dequeue(&Q,&u);p=C.vexs[u].zhan;if(u==e){printf("-->>Line%d:",i++);printqueue(Q.front->prior,C);printf("%s\n",C.vexs[e].stopname);dequeue(&Q,&u);if(u==-1)break;p=C.vexs[u].zhan;}while(p){k=p->zhanNo;q=Q.front;while(q->prior!=NULL){if(q->data!=k){q=q->prior;flag=1;}else{flag=0;break;}}if(k!=s&&flag==1)enqueue(&Q,k);p=p->next;voidsearch4(spotC,ints,inte,LQ*Q,intvisit[]){intu,k;co_zhanp;if(!visit[s]){visit[s]=1;enqueue(Q,s);while(Q->front!=Q->rear){dequeue(Q,&u);p=C.vexs[u].zhan;if(u==e){printf("-->>Line:");printqueue(Q->front->prior,C);printf("%s\n",C.vexs[e].stopname);break;}while(p){k=p->zhanNo;if(!visit[k]){visit[k]=1;enqueue(Q,k);}p=p->next;}}}}intcount(spotC,stackS,inte){inti,j,n=0,No=-1;stackp;co_zhanq;p=S;while(p)i=p->figuer;p=p->next;if(!p)break;j=p->figuer;q=C.vexs[i].zhan;while(q){if(q->zhanNo==j&&q->busNo!=No){n++;No=q->busNo;break;}elseq=q->next;}}returnn-1;}voiddestroy(stack*S){stackp=*S;while(!stackempty(*S)){*S=(*S)->next;delete(p);p=*S;}}voidsavestack(stackS,stack*S2){stackS1;initstack(&S1);updown(S,&S1);updown(S1,S2);}voidchange(sqlistQ,stack*S){sqlistp;p=Q;while(p->data!=-1){push(S,p->data);p=p->prior;}}voidsearch5(spotC,ints,inte,stack*S,stack*S2,int*m){co_zhanp;intflag;LQQ;sqlistq;intu,k,n1,n=MAX,i=1;initqueue(&Q);enqueue(&Q,s);while(Q.front!=Q.rear){dequeue(&Q,&u);p=C.vexs[u].zhan;if(u==e){change(Q.front,S);n1=count(C,*S,e);if(n1<n){savestack(*S,S2);n=n1;*m=n;}destroy(S);dequeue(&Q,&u);if(u==-1)break;p=C.vexs[u].zhan;}while(p){k=p->zhanNo;q=Q.front;while(q->prior!=NULL){if(q->data!=k){{q=q->prior;flag=1;}else{flag=0;break;}}if(k!=s&&flag==1)enqueue(&Q,k);p=p->next;}}}intmenu()intn;printf(ll*******************»^Q-glQ^K3Q1«^»2g^Tyf~k~k~k~k~k\n")『•3y’fy直TrR.冷。f%%_O%yR***********printf("**************1.*****\n");printf("**************2.*****\n");printf("**************3.*****\n");printf("**************4.*****\n");printf("**************5.R****\n");printf("**************0工总3。****************************************\n");printf("************************************************************\n");printf("士务©E;\n");printf("E^\n");printf("±^©E|\n");printf("2eN_02eN_02eN_02eN_02eN_0[•O^yRy瓦E^Y3y°fiy虫・3y***********总心务一y瓦总心OeTrA・*******总心务一O^yRxi总Uy瓦TrA・***[•£。卩直°(00卩直》»3总’f总gxi总Uy瓦3总3yA・T^3paO^:pQA|z6N§/diDAx_/±±^MA©3jCA^«/^©2yA^»0AuiU/±•?'6N§/yA总Q瓦直f—/C^»a’6N§f一瓦直/02瓦一e°/d瓦°fe°/TadOpaO^:pQA|z6N§/diDAx_/±±^MA©3jQA^«/^©2yA^»0AuiU/±•^z6N§/pAEaAAI^/Ca»az6N§I^AA/dDi0za/62A^6°/dA。述°\n");printf("/I^p¥\n");printf(”1<&»诚・:345/442/696/681/699/826\n");printf(~k~k~k~k~k\n")~k~k~k~k~k\n")printf("QeNjOn:");scanf("%d",&n);getchar();returnn;voidmain(){stackS,S2,S3;LQQ;intn,m,i,s,e,k=1,visit[len],u;charch='Y',start[max],end[max];FILE*fp;lineW;spotC;init(fp,&W,&C);do{n=menu();switch(n){case1:search1(W);break;case2:search2(W,C);break;case3:for(i=0;i<len;i++)visit[i]=0;initstack(&S);printf("C^总2宜0£。卩直°(00卩直:");scanf("%s%s",start,end);s=locate(C,start);e=locate(C,end);printf("%sp^%spAEuODA^iBEQiA:\n",C.vexs[s].stopname

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论