我一直在编写链接图实现程序,能够找到最短路径。 这是我打印的功能。我有一个带有路径标记的数组我尝试在这里对它们进行排序,然后进行打印,但是在 if(pathTaken [i] == src)行中我收到了分段错误。这可能有什么问题?
void printShortestPath(int pathTaken[], int n, int src, int dest)
{
int i = n-1;
int j = 0;
int toCompare;
int printingOrder[n];
int startingnumber;
int stopper = 1;
printingOrder[j] = dest;
while(stopper != 0)
{
j++;
pathTaken[i] = printingOrder[j];
i = pathTaken[i];
if(pathTaken[i] == src)
{
stopper = 0;
}
else
{
if(j > n)
{
printf("No path from %d to %d found", src, dest);
stopper = 0;
}
}
}
答案 0 :(得分:2)
您只检查if (j > n)
,但实际上j == n
已离线,您也可以使用else if
而不是单独的else
和if
,就像这样< / p>
else if (j >= n)
{
printf("No path from %d to %d found", src, dest);
stopper = 0;
}
或者您可以将条件添加到while
控件中,如
while ((stopper != 0) && (j < n))
或者你可以使用for
循环,这似乎是这里的自然选择
for (j = 0 ; ((stopper != 0) && (j < n)) ; ++j)