我手头有一个任务,我必须铺设铁路时间表,现在铁路轨道是直的,我已经实施了一个双重链表,用于表示火车终点站,后面的终端和终端前面这个由列表中的链接表示。
现在我想在到目前为止铺设的轨道上实施一列火车,我对实施数据库并不感兴趣,所有原始数据都是JSON形式。 JSON中一个终端的示例如下:
{
"stations_array": [{
"vertexId": 0,
"name": "Terminal0",
"lat": "84.2207",
"lng": "74.3884",
"isEndTerminal": true,
"isFunctional": true,
"vertNext": 1,
"vertPrev": null
},
{
"vertexId": 1,
"name": "Terminal1",
"lat": "104.2580",
"lng": "94.4512",
"isEndTerminal": false,
"isFunctional": true,
"vertNext": 2,
"vertPrev": 1
},
{
"vertexId": 2,
"name": "Terminal2",
"lat": "14.1659",
"lng": "04.5632",
"isEndTerminal": false,
"isFunctional": true,
"vertNext": 3,
"vertPrev": 1
}
]
}
我也用JSON代表一列火车,如下:
{
"trains_array": [{
"id": 16,
"source": "Terminal0",
"destination": "Terminal2",
"start_time": "06:00",
"days": "daily",
"terminals": [{
"id": 0,
"name": "Terminal0",
"time": "06:00"
},
{
"id": 1,
"name": "terminal1",
"time": "06:12"
},
{
"id": 2,
"name": "Terminal2",
"time": "06:25"
}
]
}]
}
现在上面JSON中的终端数组告诉我列车停在哪里(id是终端数组中每个对象的外键表示),我通过代码计算知道哪个列车到达哪个站的哪个时间,哪个站停止或省略。然而,整个方法似乎有点硬编码。我想知道是否有更好的方式可以代表这里的事情。
答案 0 :(得分:2)
如标题所示在图表上实施传输,您应该使用图表来表示铁路网络。由于所有的轨道都是双向的,我想,使用双向链表并没有多大意义。
具有相邻工作站的列表应该足够,更简单,更具可扩展性,然后您可以使用分叉。
{
"stations_array": [{
"vertexId": 0,
"name": "Terminal0",
"lat": "84.2207",
"lng": "74.3884",
"isEndTerminal": true,
"isFunctional": true,
"adj": [{1}]
},
{
"vertexId": 1,
"name": "Terminal1",
"lat": "104.2580",
"lng": "94.4512",
"isEndTerminal": false,
"isFunctional": true,
"adj": [{0,2}]
},
{
"vertexId": 2,
"name": "Terminal2",
"lat": "14.1659",
"lng": "04.5632",
"isEndTerminal": false,
"isFunctional": true,
"adj": [{1,3}]
}
]
}