|
|
|
@ -141,6 +141,8 @@ Dijkstra算法
|
|
|
|
|
SubwaySystem::addNode(Node node):向地铁系统中添加一个节点。
|
|
|
|
|
SubwaySystem::addEdge(Edge edge):向地铁系统中添加一条边。
|
|
|
|
|
SubwaySystem::shortestPath(Node from, Node to):计算从起点到终点的最短路径。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##3.1 核心数据结构的实现
|
|
|
|
|
数据结构的实现
|
|
|
|
|
|
|
|
|
@ -227,5 +229,7 @@ private:
|
|
|
|
|
特殊情况: 输入为空、非法字符或格式、查询的线路、站点不存在、查询的起点和终点在同一站点、查询的起点和终点不在同一线路上
|
|
|
|
|
预期结果:返回错误提示信息
|
|
|
|
|
运行结果:通过
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#5. 总结
|
|
|
|
|
我们设计的城市地铁导航系统旨在帮助用户方便快捷地查找和选择地铁线路及站点,并提供实时更新的地铁运行状态和乘车提示。我们在创建项目时遇到的问题有为降低空间复杂度,因而采用邻接表存储结构。Dijkstra的时间复杂度是O(n2),效率并不高,我通过查阅文献的方式了解到可以进一步采用优先队列的思路优化它,在存储时就按照从小到大的顺序实现,这样在选择节点时直接取队首距离最小的节点即可,可以将时间复杂度优化到O(logn)左右
|