一、相关文章推荐
推荐文章(有图解,有简易代码说明),比较容易理解Dijkstra(迪杰斯特拉)算法。
https://www.jianshu.com/p/ff6db00ad866
二、PSP表
三、项目说明
1、为以免cmd中运行出错,在TestMain下的test中写有测试案例。
2、实体类
Station为站点类,Result为结果类
站点类Station包含变量:站点名、所属地铁线、相邻站点集合。
结果类Result包含变量:起始站、终止站、距离(站台数)、中间经过站点。
3、Demo包下的test 用于理解Dijstra算法思想
4、DistanceBuilder包括各种读取方法
包括存储地铁信息的变量,以及读取地铁信息、写入地铁信息的方法,以及其他读取信息的辅助方法(通过站点名得到相应地铁线号、 通过站点Station对象得到相应地铁线号)
5、 DijstraUtil
该类是Dijstra算法的实现类(可结果Demo包下的test类)
四、运行说明
说明: cmd中运行之前,将out/production/Dijkstra中的station.txt和routine.txt的内容清空(清空原因是因为信息之追加的形式写入,如果不清空,会有多次运行的结果,以免混淆)(一定不要将subway.txt内容清空,是地铁信息)
注意:在cmd中运行subway(包含main函数的类),通过命令:
“java subway”即可。 由于subway要识别不同命令参数,则必须按照严格格式。
(1) 读取subway.txt文件:
命令:
“java subway -map subway.txt”
(2) 读取某条路线的地铁站点信息:
命令:
“java subway -a 1号线 -map subway.txt -o station.txt”
说明:
读取的信息写入station.txt文件中。
Station.txt内容:
(3) 读取两站点之间的信息:
命令:
java subway -b 洪湖里 复兴路 -map subway.txt -o routine.txt
说明:
两站点之间的信息写入routine.txt中,和station.txt同级。注意目录为out/production/Dijstra下。
说明routine.txt内容
五、GitHub:
https://github.com/liaoxuehua/2019SubWay