私は他のすべての1つのノードからの最短経路を見つけることができるようにしたいので、私は、私はこのウェブサイトから使用していますが、ウェブサイト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戻り値があるとき、私は出力として得るものです:
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
Iは、上記のリンクから正確なコードを使用しています。
私の質問は、作成者が機能しない関数を公開する理由と、それを動作させるために変更する方法です。
ウェブサイトについては忘れてしまいます。これはあなたの問題に役立つかもしれません:http://stackoverflow.com/questions/40875191/shortest-route-modification/40875681#40875681 –
*戻り値の型はintですが、決して何も返しません。何も返さないと宣言されている関数から何も返さない未定義の動作。リンク先のサイトには、貧弱なバグのあるコードが表示され、正しい答えが戻ってくるようなサイトがたくさんあります(コードが悪い場合でも著者は正しい答えを出して賞賛されます)。 – PaulMcKenzie