代码拉取完成,页面将自动刷新
#pragma once
#include "Edge.h"
#include "station.h"
#include <vector>
class Dist //类Dist,Dijkstra算法用来保存最短路径信息
{
public:
int index; //站点编号
int length; //当前最短路径长度
int pre; //路径最后经过的站点编号
Dist() {
index = 0;
length = 0;
pre = 0;
};
~Dist() {};
bool operator < (const Dist& arg)const {
return (length < arg.length);
}
bool operator == (const Dist& arg) const {
return (length == arg.length);
}
bool operator > (const Dist& arg) const {
return (length > arg.length);
}
bool operator <=(const Dist& arg) const {
return (length <= arg.length);
}
bool operator >= (const Dist& arg) const {
return (length >= arg.length);
}
};
class Graph {
private:
int numStation; //站点数目
int numEdge; //边的数目,两个站点之间只有一条边Edge,但是有两个间距interval
int* Mark; //标记站点是否被访问过
std::vector<Station> stationList; //存储所有站点的表,每个元素都是一个站点(内含边表)
public:
Graph();
~Graph();
Edge FirstEdge(int station); //返回依附于站点station的第一条边
Edge NextEdge(Edge preEdge); //返回与preEdge有相同顶点的下一条边,若下一条边不存在,则返回一条to和weight都为-1的边
int getStationNO(std::string name); //根据名称获取站点编号
std::string getStationName(int NO); //根据编号获取站点名称
bool isEdge(Edge e);
bool isTrans(int front, int middle, int behind); //根据三个站点,判断是否换乘
void Dijkstra(int s, Dist*& D); //Dijkstra算法
void Dijk_minTrans(int s, Dist*& D); //Dijkstra算法实现最少换乘方案
std::string minRoute(int source, int target);
std::string minTranRoute(int source, int target);
int minLength(int source, int target); //返回最短路径长度,单位:米
int minTranNum(int source, int target); //返回最少换乘方案长度
int TranNum(int source,int target,Dist*& D); //只根据顶点,返回该路径的换乘次数
int Length(int source, int target, Dist*& D); //只根据顶点,返回该路径的路程长度
//std::string Route(int source, int target, Dist*& D);//只根据顶点,返回该路径
Edge* Route(int source, int target, Dist*& D); //返回路径的边集
int getEdgeNum(int source, int target, Dist*& D); //获取路径边集的数量
void resetMark(); //重置Mark为UNVISITED
//void setEdge(int from, int to, int weight); //设置一条边
//void delEdge(int from, int to); //删除一条边
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。