|
|
|
@ -94,7 +94,7 @@ struct Station stations[MAX_STATION_NUM]; // 站点数组
|
|
|
|
|
我们选择Dijkstra算法作为路径计算模块的核心算法。Dijkstra算法是一种广泛应用于最短路径问题上的算法,具有速度快、结果正确性高、易于实现等优势。它通过不断更新起点到每个点的最短距离,并使用优先队列维护每个点的最短距离,直到计算出终点的最短路径。
|
|
|
|
|
Dijkstra算法
|
|
|
|
|
用户输入起点站和终点站,程序使用图论算法在地铁线路图中寻找到两个站之间的一条最短路径。此时使用Dijkstra算法找出最短路径。
|
|
|
|
|
#3. 系统实现
|
|
|
|
|
# 3. 系统实现
|
|
|
|
|
系统使用C++语言进行开发,使用VScode作为开发工具。
|
|
|
|
|
本系统的文件结构如下:
|
|
|
|
|
- SubwaySystem
|
|
|
|
@ -113,7 +113,7 @@ SubwaySystem::addEdge(Edge edge):向地铁系统中添加一条边。
|
|
|
|
|
SubwaySystem::shortestPath(Node from, Node to):计算从起点到终点的最短路径。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##3.1 核心数据结构的实现
|
|
|
|
|
## 3.1 核心数据结构的实现
|
|
|
|
|
数据结构的实现
|
|
|
|
|
|
|
|
|
|
本系统使用邻接表来表示地铁系统的图。具体实现如下:
|
|
|
|
@ -151,7 +151,7 @@ private:
|
|
|
|
|
其中SubwaySystem.h和SubwaySystem.cpp分别实现了地铁系统的数据结构和算法,test.cpp实现了测试用例。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##3.2 核心算法的实现
|
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
|
系统的核心算法主要包括最短路径算法和站点搜索算法。
|
|
|
|
|
|
|
|
|
|
最短路径算法采用Dijkstra算法实现,该算法的时间复杂度为O(n^2),其中n为站点数。具体实现方式如下:
|
|
|
|
@ -174,7 +174,7 @@ private:
|
|
|
|
|
|
|
|
|
|
# 4. 系统测试
|
|
|
|
|
|
|
|
|
|
```c++
|
|
|
|
|
``` .c++
|
|
|
|
|
(1)输入:1
|
|
|
|
|
结果:输出了所有的站点及简略介绍
|
|
|
|
|
(2)输入:2
|
|
|
|
|