我有一张图表 - 例如 - 巴士站和它们之间的距离。
图:AB5,BC4,CD8,DC8,DE6,AD5,CE2,EB3,AE7
AB5:停止A以距离5等停止B.
您能否建议可以支持此图表的数据结构或对象设计。
我对此的看法:
节点 - 在这种情况下是一个公共汽车站 - 可以有一条或多条路线。 Route具有SourceNode和DestinationNode,其值为距离。 节点具有地图目的地名称 - >路由。
然后可以训练A-B-C的距离为9。
免责声明,这个问题来自几年前的求职申请。您的贡献仅仅是因为我对问题解决方案的兴趣而已。此外,我不会使用StackOverflow等外部源解决工作申请练习。
答案 0 :(得分:1)
有几种数据结构来表示图形: Wikilink
如果你选择邻接矩阵,你会得到一个n * n矩阵,其中每个槽代表2个顶点之间的距离。我更喜欢这种表示,当你知道顶点的数量时(最好不要太多,这样你的矩阵不会占用太多空间)。如果需要,很容易找到2个顶点之间的距离,以及更新距离。 但是如果你不确定顶点的数量,或者这个数字将来可能增长,那么其他表示将是更好的选择。
以下是一些代码段:
static void Main(string[] args)
{
int length = 7; //number of vertices
int [,] Matrix = new int[length-1,length-1];
//instantiate Matrix with 0's
for(int i = 0; i < length; i++)
{
for(int j = 0; j < length; j++)
{
Matrix[i,j] = 0;
}
}
// Import your distances:
Matrix[0, 1] = 5; // AB5
Matrix[1, 2] = 4; //BC4 and so on..
}
希望您了解如何继续。 如果要输入大量数据,可能需要从某个文件中读取数据并迭代填充Matrix中的数据。