题目:编写程序,实现智能交通中的最佳路径选择问题:设有n个地点,编号为0~n-1,m条路径的起点、终点和代价由用户输入提供,采用实验3.1所示邻接矩阵为存储结构,寻找最佳路径方案(如花费时间最少、路径长度最短、交通费用最小等,任选其一即可)。
部分代码:
选出最小的d[i]:
//选出最小的d[i],i ∈ V-S
int Choose(int d[],int n,int s[]){ //对教材进行了一点改动,形式参数设置为数组而不是指针,参考了陈惠南老师的《数据结构——C语言描述》
int i,minpos;
ElemType min;
min = INFTY;
minpos = -1;
for(i = 0;i < n;i ++){ //这里i初值改为0
if(d[i] <= min && !s[i]){ //<改为<=
min = d[i];
minpos = i;
}
}
return minpos; //返回下标位置
}
Dijkstra算法:
//Dijkstra算法
Status Dijkstra(mGraph g,int v,int d[],int path[]){ //对教材进行了一点改动,形式参数设置为数组而不是指针,参考了陈惠南老师的《数据结构——C语言描述》
int i,k,w,distance = 0; //增加了一个distance记录最短距离之和
int *s;
if(v < 0||v > g.n-1){
return ERROR;
}
s = (int*)malloc(g.n*sizeof(int));
for(i = 0;i < g.n;i ++){ //初始化
s[i] = 0; //表示顶点i是否在s中
d[i] = g.a[v][i]; //v到i的距离
if(i != v && d[i] < INFTY){
path[i] = v; //标识指向i的源点v
}
else