【发布时间】:2016-12-10 21:56:38
【问题描述】:
我正在使用来自http://www.geeksforgeeks.org/printing-paths-dijkstras-shortest-path-algorithm/ 网站的 dijkstras 算法代码
我从这个网站使用,因为我希望能够找到从一个节点到所有其他节点的最短路径,并且我还想打印出路径信息。
打印路径信息的功能就是这个,这是我很困惑的部分。
int printSolution(int dist[], int n, int parent[])
{
int src = 0;
printf("Vertex\t Distance\tPath");
for (int i = 1; i < V; i++)
{
printf("\n%d -> %d \t\t %d\t\t%d ", src, i, dist[i], src);
printPath(parent, i);
}
}
它说返回类型是 int,但它从不返回任何东西。我把 int 拿走并放 void 但它不起作用。
这是当这个函数有 void 返回值时我得到的输出:
0 -> 1 -2147483590 0 1
0 -> 2 -2147483582 0 2
0 -> 3 -2147473649 0 3
0 -> 4 -2147473649 0 4
0 -> 5 -2147473649 0 5
0 -> 6 -2147473649 0 6
0 -> 7 -2147473649 0 7
我正在使用上面链接中的确切代码。
我想我的问题是为什么创建者会发布一个不起作用的功能,我该如何更改它以使其工作。
【问题讨论】:
-
忘掉网站吧。这可能对您的问题有帮助:stackoverflow.com/questions/40875191/…
-
它说返回类型是 int,但它从不返回任何东西。 -- 从声明为返回东西的函数中不返回任何东西是未定义的行为。有很多这样的网站,比如你链接到的那个网站显示了糟糕的、有缺陷的代码,而这些代码恰好返回了正确的答案(作者因为提出了正确的答案而受到称赞,即使代码很糟糕)。
标签: c++