佛洛依德算法求最短路径实例

该程序使用佛洛依德算法在给定的图中计算所有顶点之间的最短路径。首先,读取顶点信息和边信息,然后通过邻接表数据结构构建图。接着,应用佛洛依德算法更新最短路径矩阵,并输出结果。用户可以进行动态添加地点、路径以及更改路径的操作,程序会实时更新最短路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

佛洛依德算法求最短路径实例

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

using namespace std;
//最多的地点数量
const int MAX_VALUE = 30;

//存储最短路径值
int ShortestPathvalue[MAX_VALUE][MAX_VALUE] = {
   
   0};
//存储具体路径
int ShortestPathmatrix[MAX_VALUE][MAX_VALUE] = {
   
   0};
//地点信息
char _mapName[MAX_VALUE][50] = {
   
   };
//距离信息,_distance[0][1] = 50;代表从下标为0到下表为1地点距离为50
int _distance[MAX_VALUE][MAX_VALUE] = {
   
   0};
//边表结点
typedef struct EdgeNode {
   
   
    //顶点对应的下标
    int adjvex;
    //权值
    int weight;
    //指向下一个邻接点
    struct EdgeNode *next;
} edgeNode;//邻接表 

//顶点表结点
typedef struct VertexNode {
   
   
    //顶点数据
    char data[50];
    //边表头指针
    edgeNode *firstedge;
} VertexNode, AdjList[100];//邻接矩阵 

//集合
typedef struct {
   
   
    AdjList adjList;
    //顶点数和边数
    int numVertexes, numEdges;
} GraphAdjList;// 结构体 

class AdjacencyList {
   
   
public:


    void ShowALGraph(GraphAdjList *G);

    void Test();

    //初始化地图
    void InitMap(GraphAdjList *G);

    //创建地图
    void CreateALGraph(GraphAdjList *G);

    //计算各个顶点之间最短路径
    void ShortestPath_Floyd(GraphAdjList *G, int P[MAX_VALUE][MAX_VALUE], int D[MAX_VALUE][MAX_VALUE]);

    //输出路径长度和具体路径
    void ShowShortestResult(int originPos,int endPos);
};
 
void AdjacencyList::CreateALGraph(GraphAdjList *G) {
   
   
    edgeNode *e;
    //读入顶点信息,建立顶点表
    for (int i = 0; i < G-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值