int allpath(mapstr m) { int k,i,j,l,n; printf("\n\n请输入您想要查询的两个景点的编号:\n\n"); scanf("%d%d",&i,&j);printf("\n\n"); l=locatevet(m,i);//locatevet 确定该顶点是否存在。若存在,返回该顶点编号。 n=locatevet(m,j); d[0]=l;//路径起点l(字母).(d[]数组为全局变量) for(k=0;k<vertex;k++) visited[k]=0; visited[l]=1; path(m,l,n,0); return 1; }请帮我优化一下
时间: 2023-12-09 13:03:43 浏览: 142
1_BD_allpath.R.r
好的,以下是对该代码的一些优化建议:
1. 增加输入提示语句的复用性,可以将其移到函数外部:
```c
void inputPrompt() {
printf("\n\n请输入您想要查询的两个景点的编号:\n\n");
}
```
2. 将路径起点选择改为随机选择,提高程序的随机性:
```c
srand((unsigned)time(NULL)); // 初始化随机数种子
l = rand() % vertex; // 随机选择起点
```
3. 修改变量名为更具描述性的名称,增加代码可读性:
```c
int findAllPath(mapstr map) {
int startVertex, endVertex;
int visitedVertexCount = 0;
inputPrompt();
scanf("%d%d", &startVertex, &endVertex);
printf("\n\n");
startVertex = locateVertex(map, startVertex);
endVertex = locateVertex(map, endVertex);
d[0] = startVertex;
for (int i = 0; i < vertex; i++) {
visited[i] = 0;
}
visited[startVertex] = 1;
path(map, startVertex, endVertex, visitedVertexCount);
return 1;
}
```
希望这些建议能对你有所帮助。
阅读全文