帮我写个代码 用c语言
时间: 2023-12-11 12:02:58 浏览: 16
好的,下面是使用Dijkstra算法求解从顶点A到顶点B的最短路径的C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define INF 99999 // 无穷大
int graph[6][6] = { // 有向图的邻接矩阵表示
{0, 2, 1, INF, INF, INF},
{INF, 0, INF, 2, INF, INF},
{INF, INF, 0, 1, 3, INF},
{INF, INF, INF, 0, INF, 2},
{INF, INF, INF, INF, 0, 1},
{INF, INF, INF, INF, INF, 0}
};
int dist[6]; // 存储起点到各个顶点的距离
bool visited[6]; // 标记顶点是否已经确定最短路径
// 找到dist数组中未确定最短路径的最小值的下标
int find_min_index() {
int min = INF;
int index = -1;
for (int i = 0; i < 6; i++) {
if (!visited[i] && dist[i] < min) {
min = dist[i];
index = i;
}
}
return index;
}
// 使用Dijkstra算法求解最短路径
void dijkstra(int start, int end) {
// 初始化dist数组和visited数组
for (int i = 0; i < 6; i++) {
dist[i] = INF;
visited[i] = false;
}
dist[start] = 0;
visited[start] = true;
// 依次处理每个顶点
for (int i = 0; i < 6; i++) {
int min_index = find_min_index();
if (min_index == -1) {
break;
}
visited[min_index] = true;
for (int j = 0; j < 6; j++) {
if (!visited[j] && graph[min_index][j] != INF && dist[j] > dist[min_index] + graph[min_index][j]) {
dist[j] = dist[min_index] + graph[min_index][j];
}
}
}
// 输出起点到目标顶点的最短路径长度
printf("Distance from A to B: %d\n", dist[end]);
}
int main() {
dijkstra(0, 1); // 从顶点A到顶点B的最短路径
return 0;
}
```
这里是一个简单的有向图,可以根据需要修改邻接矩阵来测试不同的情况,代码中的起点为顶点A,目标顶点为顶点B。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)