设计一个校园以江西财经大学麦庐园为例导航系统要求实现输入所在地和目的地给出最短路径运用迪杰斯特拉算法编写该导航系统的C语言代码
以下是一个简单的使用迪杰斯特拉算法实现校园导航系统的C语言代码。假设校园中有若干个地点,每两个地点之间都有一条路径,并且每条路径都有一个权重(距离)。代码中使用邻接矩阵表示校园地点之间的连接关系。
#include <stdio.h>
#include <stdbool.h>
#define MAX_VERTICES 10
#define INF 9999
// 邻接矩阵表示校园地点之间的连接关系
int adjacencyMatrix[MAX_VERTICES][MAX_VERTICES] = {
{0, 2, INF, 5, INF, INF},
{2, 0, 4, INF, 7, INF},
{INF, 4, 0, 6, INF, 3},
{5, INF, 6, 0, 2, 3},
{INF, 7, INF, 2, 0, 1},
{INF, INF, 3, 3, 1, 0}
};
// 迪杰斯特拉算法找到最短路径
void dijkstra(int start, int end) {
int distance[MAX_VERTICES];
bool visited[MAX_VERTICES];
for (int i = 0; i < MAX_VERTICES; i++) {
distance[i] = INF;
visited[i] = false;
}
distance[start] = 0;
for (int count = 0; count < MAX_VERTICES - 1; count++) {
int minDistance = INF;
int minIndex = -1;
for (int i = 0; i < MAX_VERTICES; i++) {
if (!visited[i] && distance[i] < minDistance) {
minDistance = distance[i];
minIndex = i;
}
}
if (minIndex == -1) {
break;
}
visited[minIndex] = true;
for (int i = 0; i < MAX_VERTICES; i++) {
if (!visited[i] && adjacencyMatrix[minIndex][i] != INF && distance[minIndex] + adjacencyMatrix[minIndex][i] < distance[i]) {
distance[i] = distance[minIndex] + adjacencyMatrix[minIndex][i];
}
}
}
printf("最短路径长度: %d\n", distance[end]);
}
int main() {
int start, end;
printf("请输入起点和终点(0-5):");
scanf("%d %d", &start, &end);
dijkstra(start, end);
return 0;
}
这段代码中,我们使用了邻接矩阵来表示校园地点之间的连接关系。在 dijkstra 函数中,我们使用迪杰斯特拉算法找到从起点到终点的最短路径。最后,在 main 函数中,我们获取输入的起点和终点,并调用 dijkstra 函数来计算最短路径的长度。
请注意,代码中的邻接矩阵是一个简化的示例,实际情况下可能需要根据具体校园地点的数量和连接关系进行相应的修改
原文地址: https://www.cveoy.top/t/topic/h0Ww 著作权归作者所有。请勿转载和采集!