全国交通咨询模拟
r->adjvex)).stata[0].begintime[0],(*(*(arcs+q->adjvex)+r->adjvex)).stata[0].begintime[1],G.vertices[q->adjvex].cityname,G.vertices[r->adjvex].cityname);
q=r;
r=r->next; n++;
}
printf(\最少中转次数是%d次\\n\\n\
for(v=0;v { q=p[v].next; while(q!=NULL) { s=q; q=q->next; free(s); } for(v=0;v q=p[v].next; } } t=t->nextarc; } EnterQueue(&Q,w); } free(p); return; } p[v].next=NULL; while(q!=NULL) 29 全国交通咨询模拟 { s=q; q=q->next; free(s); } p[v].next=NULL; } free(p); if(k==1) printf(\不存在列车车次从%s到 %s\\n\\n\ else printf(\不存在飞机航班从%s到 %s\\n\\n\ } void MinExpenditure(infolist arcs,float *expenditure,int *route) { int i; *expenditure=arcs.stata[0].expenditure; if(*expenditure *route=0; else *route=-1; for(i=1;i<=arcs.last;i++) if(arcs.stata[i].expenditure<*expenditure) { *expenditure=arcs.stata[i].expenditure; *route=i; } 30 } 全国交通咨询模拟 4.4.求城市v0,v1之间的最少费用程序: void ExpenditureDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1,float *M,int *final) { int v=-1,w,i,route; float m,expenditure; Node *p,*q,*r,*s; p=(Node *)malloc(G.vexnum*sizeof(Node)); for(v=0;v { *(final+v)=False; MinExpenditure(*(*(arcs+v0)+v),M+v,&route); p[v].next=NULL; if(*(M+v) { q=(Node *)malloc(sizeof(Node)); s=(Node *)malloc(sizeof(Node)); q->adjvex=v0; s->adjvex=v; s->route=route; p[v].next=q; q->next=s; s->next=NULL; } *(M+v0)=0; } *(final+v0)=True; for(i=1;i { 31 全国交通咨询模拟 m=INFINITY; v=-1; for(w=0;w if(*(final+w)==False) if(*(M+w) v=w; m=*(M+w); } if(v==v1) { q=p[v].next; r=q->next; printf(\旅行路线是:\\n\ while(r!=NULL) { if(k==1) printf(\乘坐No.%d列车车次在%d:%d从%s到% s\\n\jvex)+r->adjvex)).stata[r->route].begintime[0],(*(*(arcs+q->adjvex)+r->adjvex)).stata[r->route].begintime[1],G.vertices[q->adjvex].cityname,G.vertices[r->adjvex].cityname); else printf(\乘坐No.%d飞机航班在%d:%d从%s到%s\\n\djvex)+r->adjvex)).stata[r->route].begintime[0],(*(*(arcs+q->adjvex)+r->adjvex)).stata[r->route].begintime[1],G.vertices[q->adjvex].cityname,G.vertices[r->adjvex].cityname); q=r; r=r->next; 32