我正在尝试使用有向图(我知道但从未实现过)来模拟运输网络来编写程序。关于如何接近有向图的想法
用户将输入一个行星名称,后跟一个表示图形中总节点数量的整数。然后用户将逐一浏览每个节点。他们会给它一个名字,给出节点所拥有的邻居数量,然后给出具体名称。输入将如下所示。
some_planet 4
node1 2 node2 node3
node2 1 node4
node3 1 node4
node4 1 node1
然后我只输出node1无法到达的节点。但是,我有一些关于实现这个问题的问题。
1)最重要的是存储这些东西。什么是简单的方法?我想到一个LinkedList,并认为我会链接位置。然后,我可以将指针弹出到与它相对应的任何输入。但是,我不知道如何做最后一部分。
2)下一个大搜索图表。我正计划进行递归深度优先搜索。你看到这个算法有什么问题吗?我需要以这种方式分别搜索每个节点,但是我必须增加这个。我可以把所有东西都放在for循环中吗?
recursive-d-first-search(graph G, node start, node find)
if(start == find)
return true;
else
for every neighbor n of start
success = recursive-d-first-search(graph G, node n, node find);
if(success)
return true;
return false;
图形通常存储为[邻接表(http://en.wikipedia.org/wiki/ Adjacency_list)或[adjacency matrices](http://en.wikipedia.org/wiki/Adjacency_matrix)。您在问题中的输入实际上是一个邻接列表。 – YXD