全国交通咨询模拟
}
printf(\最少旅行费用是%f元\\n\\n\
for(v=0;v { q=p[v].next; while(q!=NULL) { s=q; q=q->next; free(s); } p[v].next=NULL; } free(p); return; } else if(v!=-1) { *(final+v)=True; for(w=0;w if(*(final+w)==False&&(*(*(arcs+v)+w)).last>-1) { MinExpenditure(*(*(arcs+v)+w),&expenditure,&route); if(*(M+w)>m+expenditure) { *(M+w)=m+expenditure; q=p[w].next; while(q!=NULL) 33 { s=q; 全国交通咨询模拟 q=q->next; free(s); } q=&p[w]; s=p[v].next; while(s!=NULL) r=(Node *)malloc(sizeof(Node)); r->adjvex=w; r->route=route; r->next=NULL; q->next=r; } } } } for(v=0;v q=p[v].next; while(q!=NULL) { s=q; q=q->next; { r=(Node *)malloc(sizeof(Node)); r->adjvex=s->adjvex; r->route=s->route; q->next=r; q=r; s=s->next; } 34 全国交通咨询模拟 free(s); } p[v].next=NULL; } free(p); if(k==1) printf(\不存在列车车次从%s到 %s\\n\\n\ else printf(\不存在飞机航班从%s到 %s\\n\\n\ } 4.5.求城市v0,v1之间的最少时间程序: void TimeDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,int (*T)[2],int *final) { int v,w,i,route,m[2]; Node *p,*q,*r,*s,*t; p=(Node *)malloc(G.vexnum*sizeof(Node)); for(v=0;v { *(final+v)=False; MinTime(*(*(arcs+v0)+v),*(T+v),&route); p[v].next=NULL; if(*(*(T+v)+0) { q=(Node *)malloc(sizeof(Node)); s=(Node *)malloc(sizeof(Node)); q->adjvex=v0; s->adjvex=v; 35 全国交通咨询模拟 s->route=route; p[v].next=q; q->next=s; s->next=NULL; } } *(*(T+v0)+0)=0; *(*(T+v0)+1)=0; *(final+v0)=True; for(i=1;i { m[0]=INFINITY; m[1]=INFINITY; v=-1; for(w=0;w if(*(final+w)==False) if(*(*(T+w)+0) { v=w; m[0]=*(*(T+w)+0); m[1]=*(*(T+w)+1); } if(v==v1) { q=p[v].next; r=q->next; printf(\旅行路线是:\\n\ while(r!=NULL) { if(k==1) 36