再议公交查询算法
前段时间写过一篇《公交路线查询算法》,其中设计了一个数据存储的方案,这里又做了一番改进。
《公交路线查询算法》提到的算法最多提供倒乘一次的方案(我觉得在实际应用中也能基本满足需要,如果一个城市公交倒乘一次都不能到达目的地的话,公交也太不发达了)。如果将以下数据初始化为一张图,就可以按照图的路径查询算法来解决公交查询问题了,倒乘多次的方案也能提供。请真正做过公交查询系统的高人指点。
Struct Stop
{
String Name;
Stop *LastStop;
Stop *NextStop;
} Stop;
数据存储设计如下:
<?xml version="1.0" encoding="utf-8" ?>
<Map> <!--所有公车站点-->
<Stop>
<Name>圆明园东门站</Name><!--站点名称-->
<Bus><!--在此站停车的车次-->
<Num>656</Num>
<LastStop><!--上一站-->
<name>北京体育大学站</name>
<distance>2</distance><!--据本站距离-->
</LastStop>
<NextStop><!--下一站-->
<name> 清华附中站</name>
<distance>1</distance>
</NextStop>
</Bus>
<!--……
……
……-->
<Bus>
<Num>656</Num>
<LastStop>
<name>北京体育大学站</name>
<distance>2</distance>
</LastStop>
<NextStop>
<name> 清华附中站</name>
<distance>1</distance>
</NextStop>
</Bus>
<Bus>
<Num>656</Num>
<LastStop>
<name>北京体育大学站</name>
<distance>2</distance>
</LastStop>
<NextStop>
<name> 清华附中站</name>
<distance>1</distance>
</NextStop>
</Bus>
</Stop>
<!--……
……
……-->
<Stop>
<Name>清华附中站</Name>
<Bus>
<Num>743</Num>
<LastStop>
<name>圆明园东门</name>
<distance>2</distance>
</LastStop>
<NextStop>
<name> 圆明园东路</name>
<distance>1</distance>
</NextStop>
</Bus>
<!--……
……
……-->
<Bus>
<Num>运通105</Num>
<LastStop>
<name>圆明园东门</name>
<distance>2</distance>
</LastStop>
<NextStop>
<name> 圆明园东路</name>
<distance>1</distance>
</NextStop>
</Bus>
<Bus>
<Num>656</Num>
<LastStop>
<name>圆明园东门</name>
<distance>2</distance>
</LastStop>
<NextStop>
<name> 圆明园东路</name>
<distance>1</distance>
</NextStop>
</Bus>
</Stop>
</Map>