地铁线路具体实现方法
1、数据存储方式
最初采用map存储(地铁线路,站定名称,转站线路)。
这样在查询某条线路的所有站点时,可以便于查询。
同时可以得知某个站点是否为转站的车站,以及转站的线路。
不过在完成最短路径查询的需求时,发现难以将一条先上的站点按顺序串联起来,难以完成最短路径的查询。
网上查询相关代码后,改变存储方式为(前一站,后一站,两站间距离)。
由于题目中没有给出两站的距离,因此两站的距离均设为1。
这种数据的存储方式能够确保一条地铁线路的所有站点串连起来,方便之后进行最短路径查找。
2、需求1导入txt文件
通过(line = reader.readLine()) != null判断循环条件将txt文本文件里的地铁线路信息读入
3、查询指定地铁线经过的站点
由于采用前一站,后一站,两站间距离的方式存储,输出一条线上的所有站点较为麻烦。
于是在读取数据时建立数组存储,在实现查询指定地铁线经过的站点的需求时,直接输出数组里的内容即可。
虽然需要额外开设数据空间对地铁站点信息加以存储,不过在需求实现上非常方便。
输入:
输出:
4、两站点间最短路径查找
如果两个站点在同一条地铁线上,则直接返回结果。
如果两个站点在两条不同的地铁线上。
以线路上是否还有下一个站点,作为循环条件。
如果一直有下一个站点,则循环进行递归调用。
输入函数的参数为(下一个站点,目的站,经过的站点路线)。
如果还不是相邻的两站,则直接进行下一次循环。
如果是最后两站,或者距离更加短,则存储进tempRs。
输入:
输出:
5、体会
构思地铁线路问题,将其抽象为基于图的运算。设计主要功能模块。
由于对最短路径查询算法不太熟练,程序编写还有部分问题,参考了相关的代码。