全国交通咨询模拟
函数LocateVertex(G,a[k].vt)得到起始结点的位置j; q=G->vertices[i].planfirstarc; m=0;
while(q!=NULL)
{
if(弧q中的邻接顶点与j相等)
{
将数组a[i]中的内容都复制到弧q中;m=1;break; } q=q->nextarc; if(m=0);
{
开辟一个弧结点;将数组a[i]中的内容都复制到新的弧结点中; 将弧结点连接到适当的位置中去;arc_num++; } k++; }
G->planarcnum=arc_num; 打开列车信息文件\
将文件中的内容以块为单位读到缓冲区数组a中; 关闭文件;] a的计数变量k=0; 弧的计数变量arc_num=0; while(k<信息个数)
{
调用函数LocateVertex(G,a[k].vt)得到起始结点的位置i; 调用函数LocateVertex(G,a[k].vt)得到起始结点的位置j; q=G->vertices[i].trainfirstarc;m=0; while(q!=NULL)
{
9
全国交通咨询模拟
if(弧q中的邻接顶点与j相等)
{
将数组a[i]中的内容都复制到弧q中;m=1;break; }
q=q->nextarc; if(m=0);
{
开辟一个弧结点;将数组a[i]中的内容都复制到新的弧结点中; 将弧结点连接到适当的位置中去;arc_num++; } k++; }
G->trainarcnum=arc_num; 返回; }
3.2.4.创建航班算法的伪码描述如下:
creat planefile()
{
while(flag)/*flag为标志位,初值为1*/
{
提示“输入航班信息”; 输入航班code; 输入航班的出发城市vt; 输入航班的到达城市vh; 输入机票价格money; 输入航班的出发时间bt; 输入航班的到达时间at;
a.[count].co=code;/*a为程序头部定义的结构体*/ strcpy(a.[count].vt,vt); strcpy(a.[count].vh,vh);
10
全国交通咨询模拟
a.[count].bt=bt; a.[count].at=at; a.[count].mo=money; 计数值count+1;
提示“是否要继续输入航班信息:”; scanf(“%d”,&flag); }
if(航班文件不能以读写形式打开) }
3.2.5.求城市v0,v1之间的最少费用算法的伪码描述如下:
ExpenditureDispose()
{for(v=0;v<城市个数;v++) {城市v还未求得最少费用; *(D+v)=城市v0到v的最少费用; 将城市v的路径设置为空; if(*(D+v) 将城市v0和v加入到城市v的路径中; } 城市v0到城市v0的最少费用为0; 城市v0设为已求得最少费用; for(i=1;i<城市个数;v++) {m=INFINITY; for(w=0;w<城市个数;w++) 11 { 提示“无法打开文件”; 将计数值count写入航班车文件; for(i=0;i 全国交通咨询模拟 if(城市w未求得最少费用) if(*(D+w) if(v等于v1) {根据城市v的路径输出从城市v0到城市v1所需经过的城市及路线; 输出最少费用*(D+v1); 返回; } else {将城市v设为已求得最少费用; for(w=0; if(城市w未求得最少费用并且从城市v到w有路径) {求出从城市v到城市w的最少费用及路线; if(*(D+w)>m+城市v到w的最少费用) {*(D+w)=m+城市v到w的最少费用; 将城市w的路径改成城市v的路径并在最后加入城市w; } } } 输出没有列车或飞机从城市v0到v1; } 3.2.6最少中转次数算法的伪码描述如下: 求城市v0到城市v1的最少中转次数 TransferDispose() {for(v=0;v 12