跳至主要內容

C语言校园导航系统

学长敲代码原创大约 1 分钟源码C/C++

C语言校园导航系统

代码量:380

知识点:图,三维数组等数据结构。采用迪杰斯特拉算法求最短路径、最短时间

里面的学校内容是可以自行修改的,你可以改成城市、你的学校

我们可以加入中间点来查询路径的最快时间和最短路径

void show4(int i,int j, int temp) 
{
    int k=0,a=i,b=j;
    int S;
    double L;
    int h,m,s;
    printf("\n请输入起始时间(hh:mm:ss):");
    scanf("%d:%d:%d",&h,&m,&s);
    if(shortest[i][j][temp]!=Maxedge)
    {
        if(temp == 0)
        printf("从%s到%s的最短路径为:\n",ver[i].name,ver[j].name);
        if(temp == 1)
        printf("从%s到%s的最快时间的路径为:\n",ver[i].name,ver[j].name);
        printf("%s",ver[i].name);
        while(path[i][j][temp]!=0)
        {
            k=path[i][j][temp];
            while(path[i][k][temp]!=0)
        {
            k=path[i][k][temp];
        }
            printf("----%s",ver[k].name);
            i=k;
        }
              printf("----%s;\n",ver[j].name );
              if(temp == 0)
              {
                  printf("最短距离为:%d米。\n",shortest[a][b][temp]);
                S = shortest[a][b][temp] / 1;//(人每秒1米) 
                time(h, m, s, S);
              }
                  if(temp == 1)
                  {
                      printf("最快时间为:%d秒。\n",shortest[a][b][temp]);
                    time(h, m, s, shortest[a][b][temp]);    
                  }
                    
    }
    else
        printf("从%s不能到达%s。",ver[i].name ,ver[j].name );
}