下面這圖是本人亂塗鴉的只有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嗎?
今天先討論到這。