下面这图是本人乱涂鸦的只有3条线路的公交路线图数据结构
一号线 A-B-E-D-Kspa
二号线F-B-C-D-K-J设计
三号线H-I-E-J-K-Dim
保存这个数据结构使用图的变形很合适地图
首先是一个全部路线的集合,一个元素包含两个标识,路线和第一个站点。可能你会说那一条路线须要保存两次,由于正反的形式是不相同的,由于起始站点不一样。咱们先讨论一种状况,按上图来讲,就是从左往右。数据
咱们的数据集合就是查询
(1,A).(2,F),(3,H)margin
对于一个站点咱们须要一个保存信息的格式。一个站点到下一个站点可能有几天线路一块儿,因此img
站点设计以下,以D站点来讲集合
除了保存站点信息外,还有(1,K)(2,K)
下面谈谈怎么得到获得两个节点之间的路径,这也是公交查询系统的核心功能。
咱们下面以几个例子来分析一下(只考虑从左往右)。
1.好比我如今H,我想到K。咱们知道咱们本身如今在的地点是应该的,咱们如今设置你要去的站点(可能你并不知道站点,你知道地方,这个能够经过地图来,地图比对,而后能够给出附近站点的信息,这个就是后话了,这里不谈)。在输入站点后,在处理站点信息时,我但愿站点有这些信息,这个站点在那几条线路上,好比E站点在1和3两条线路上。
下面咱们开始,太好了H在线路3上,K也在线路3上,太好了,乘客你就乘3路车,确定把你送到K,除了车子半路抛锚。
2.如今咱们想从A到J,这有点麻烦。咱们输入J,它带有的信息(2,3),看来咱们必须转车了,没办法,咱们如今只但愿不要太坑就行。咱们在A上了一路车,开了几分中,到达了B(2,1),我想我能够转车了,可也不必定。我继续到达了E(1,3),这也是好的选择。可我仍是不想下车,继续到达了D,看状况你要坐3路车往回走了。
如下是路线分析:
A-B------J1-2
A-E-J1-3
A-D(K)----j1-3
这只是正常的,若是你真是很无聊,你能够A-B-D-E-J,路线:1-2-1-3,这些没有意思的项咱们应该是在内部屏蔽的。
为何只讨论一个方向,你知道A-K怎么走,难道不知到K-A吗?
今天先讨论到这。