数据结构课设报告(5)

2019-08-30 23:29

Bus busroute(int num) {

Bus *p;

p=(Bus *)malloc(sizeof(Bus)); if(num==7) { p->num=7; p->stopnum=11;

p->pass[0]=0;p->pass[1]=1;p->pass[2]=2;p->pass[3]=3;p->pass[4]=4;p->pass[5]=5; p->pass[6]=6;p->pass[7]=7;p->pass[8]=8; p->pass[9]=9;p->pass[10]=10; return *p; } if(num==107) { p->num=107; p->stopnum=11;

p->pass[0]=0;p->pass[1]=11;p->pass[2]=12;p->pass[3]=13;p->pass[4]=4;p->pass[5]=5; p->pass[6]=6;p->pass[7]=7;p->pass[8]=8;p->pass[9]=9; p->pass[10]=10; return *p; } if(num==152) { p->num=152; p->stopnum=11;

p->pass[0]=14;p->pass[1]=15;p->pass[2]=16;p->pass[3]=17;p->pass[4]=18; p->pass[5]=5;p->pass[6]=6;p->pass[7]=7;p->pass[8]=8;p->pass[9]=9; p->pass[10]=10; return *p; } if(num==63) { p->num=63; p->stopnum=13;

p->pass[0]=19;p->pass[1]=20;p->pass[2]=14;p->pass[3]=15;p->pass[4]=16;

20

p->pass[5]=17;p->pass[6]=18;p->pass[7]=21;p->pass[8]=5;p->pass[9]=22; p->pass[10]=23;p->pass[11]=24;p->pass[12]=25; return *p; } if(num==124) { p->num=124; p->stopnum=12;

p->pass[0]=26;p->pass[1]=27;p->pass[2]=28;p->pass[3]=2;p->pass[4]=3;

p->pass[5]=4;p->pass[6]=5;p->pass[7]=22;p->pass[8]=23;p->pass[9]=29; p->pass[10]=24; p->pass[11]=25; return *p; } if(num==145) { p->num=145; p->stopnum=11;

p->pass[0]=30;p->pass[1]=27;p->pass[2]=31;p->pass[3]=32;p->pass[4]=3; p->pass[5]=4;p->pass[6]=5;p->pass[7]=6;p->pass[8]=33;p->pass[9]=34; p->pass[10]=35; return *p; } if(num==502) { p->num=502; p->stopnum=10;

p->pass[0]=36;p->pass[1]=37;p->pass[2]=38;p->pass[3]=39;p->pass[4]=5; p->pass[5]=6;p->pass[6]=7;p->pass[7]=8;p->pass[8]=9;p->pass[9]=10; return *p; } if(num==17) { p->num=17; p->stopnum=11;

p->pass[0]=40;p->pass[1]=41;p->pass[2]=42;p->pass[3]=43;p->pass[4]=18; p->pass[5]=5;p->pass[6]=6;p->pass[7]=7;p->pass[8]=8;p->pass[9]=9; p->pass[10]=10; return *p;

21

} free(p); }

int passnum(int busnum,int site) //计算公交站site在公交线busnum中的位置 {

int i,m2;

m2=busroute(busnum).stopnum; for(i=0;i

return i; }

int judge(int busnum, int site) 在公交线busnum上面,若在,则返回值为1 {

int i,m;

m=busroute(busnum).stopnum; for(i=0;i

if(i==m) return 0; }

void huanchewng(int s0,int s1) {

int a,b,i=0,m,n; int t[8];

for(a=0;a<8;++a)

t[a]=0; 始化t[]

for(a=0;a<8;++a) 先判断s0与s1有没有相同的路线经过 {

if(G.vex[s0].route[a]!=0)

22

//判断公交站site是否 //初 //首 for(b=0;b<8;++b) { if(G.vex[s1].route[b]!=0) if(G.vex[s0].route[a]==G.vex[s1].route[b]) { t[i]=G.vex[s0].route[a]; ++i; } } }

if(t[0]!=0) //有相同路线,就开始输出 { printf(\与%s有直达线:\\n\.vex[s0].site,G.vex[s1].site); for(a=0;a<8;++a) { if(t[a]!=0) { if(a>0) printf(\或\ printf(\路 \ m=passnum(t[a],s0); n=passnum(t[a],s1); printf(\此线路需要经过%d站才能到达\ } } }

/*直达线路失败,下面开始一次换乘*/

if(t[0]==0) //没有相同路线,就开始考虑换乘线路 { i=0; int j=0,r[13][8],q[13],h[8],u; for(i=0;i<13;++i) for(j=0;j<8;++j) r[i][j]=0; //r[][]用来记录交叉点的与终点站的路线 for(i=0;i<13;++i) q[i]=50; //q[i]用来存储的交叉点,初始值为50 for(i=0;i<13;++i) h[i]=0; //h[i]用来存储交叉点与起始点s0的公交线 i=0,j=0; for(a=0;a<8;++a)

23

{ if(G.vex[s0].route[a]!=0) { m=G.vex[s0].route[a]; n=passnum(m,s0); for(;n0) { if(j==0) i=i+1; r[i][j]=G.vex[s1].route[b]; q[i]=u; h[i]=m; ++j; } } }

n=passnum(m,s0); for(;n>=0;--n) { u=busroute(m).pass[n-1]; j=0; for(b=0;b<8;++b) { if(G.vex[s1].route[b]!=0) if(judge(G.vex[s1].route[b],u)>0) { if(j==0) i=i+1; r[i][j]=G.vex[s1].route[b]; q[i]=u; h[i]=m; ++j; } } } } } if(r[1][0]!=0) //又一次换乘方案则开始输出

24


数据结构课设报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:昆明市乡村城镇化建设的几点思考 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: