我正在尝试使用有向图(我知道但从未实现)编写一个程序来模拟交通网络。
用户将输入一个行星名称,后跟一个整数,表示图中的总节点数。然后用户将一个一个地遍历每个节点。他们会给它一个名字,给出节点的邻居数量,然后是具体的名字。输入将如下所示。
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;