全国交通咨询模拟
a[k].at[1]=q->info.stata[t].arrivetime[1]; k++;
}
if((fp=fopen(\{
printf(\无法打开文件!\\n\ }
}
q=q->nextarc;
return 0;
} i=0;
fprintf(fp,\ while(i { } fclose(fp); if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1) printf(\文件写入错误!\\n\ i++; k=0; for(i=0;i { q=G->vertices[i].trainfirstarc; while(q!=NULL) { for(t=0;t<=q->info.last;t++) { strcpy(a[k].vt,G->vertices[i].cityname); strcpy(a[k].vh,G->vertices[q->adjvex].cityname); 25 全国交通咨询模拟 a[k].co=q->info.stata[t].number; a[k].mo=q->info.stata[t].expenditure; a[k].bt[0]=q->info.stata[t].begintime[0]; a[k].bt[1]=q->info.stata[t].begintime[1]; a[k].at[0]=q->info.stata[t].arrivetime[0]; a[k].at[1]=q->info.stata[t].arrivetime[1]; k++; } if((fp=fopen(\{ } i=0; printf(\无法打开文件!\\n\return 0; } } q=q->nextarc; fprintf(fp,\ while(i { } fclose(fp); if(fwrite(&a[i],sizeof(struct arc),1,fp)!=1) printf(\文件写入错误!\\n\ i++; return 1; } 4.3.求城市v0,v1之间的最少中转次数的程序: void TransferDispose(int k,infolist (*arcs)[MAX_VERTEX_NUM],ALGraph G,int v0,int v1) 26 全国交通咨询模拟 { int visited[MAX_VERTEX_NUM],v,w,n=1; LinkQueue Q; ArcNode *t; Node *p,*q,*r,*s; p=(Node *)malloc(G.vexnum*sizeof(Node)); for(v=0;v { visited[v]=0; p[v].next=NULL; } InitQueue(&Q); visited[v0]=1; q=(Node *)malloc(sizeof(Node)); q->adjvex=v0; q->next=NULL; p[v0].next=q; EnterQueue(&Q,v0); while(!IsEmpty(&Q)) { DeleteQueue(&Q,&v); if(k==1) t=G.vertices[v].trainfirstarc; else t=G.vertices[v].planefirstarc; while(t!=NULL) { w=t->adjvex; if(!visited[w]) { 27 全国交通咨询模拟 visited[w]=1; q=&p[w]; s=p[v].next; while(s!=NULL) { r=(Node *)malloc(sizeof(Node)); r->adjvex=s->adjvex; q->next=r; q=r; s=s->next; } r=(Node *)malloc(sizeof(Node)); r->adjvex=w; r->next=NULL; q->next=r; if(w==v1) { q=p[w].next; r=q->next; printf(\旅行路线是:\\n\ while(r!=NULL) { if(k==1) printf(\乘坐No.%d列车车次在%d:%d从%s到% s\\n\->adjvex)).stata[0].begintime[0],(*(*(arcs+q->adjvex)+r->adjvex)).stata[0].begintime[1],G.vertices[q->adjvex].cityname,G.vertices[r->adjvex].cityname); else printf(\乘坐No.%d飞机航班在%d:%d从%s到%s\\n\ 28