看看下面的代码一次,通过澄清我的怀疑来帮助我。 我已经对我怀疑的每一行都表示怀疑。而且,它是巨大代码的一部分。所以请忽略变量声明和所有。
整个代码工作正常,编译时没有错误。
double Graph::Dijkstra( path_t& path )
{
int* paths = new int[_size];
double min = dijkstra(paths); // **is a function call or not? bcz i didn't found any function in the code**
if(min < 0) { delete[] paths; return -1;}
int i = _size - 1;
while(i>=0)
{
path.push(i); // **when will the program come out of this while loop, i'm wondering how does it breaks?**
i=paths[i];
}
path.push(0);
delete[] paths;
return min;
}
可以使用完整编码here。
答案 0 :(得分:0)
double min = dijkstra(paths); // **is a function call or not? bcz i didn't found any function in the code**
几乎可以肯定的是。但是,它可以是一个自由函数,成员函数,宏调用的函数,或其他东西。在没有看到其余代码的情况下,我们只能猜测。
while(i>=0)
{
path.push(i); // **when will the program come out of this while loop, i'm wondering how does it breaks?**
i=paths[i];
}
当i
小于零时,程序将退出循环。如果我不得不猜测,我会说路径中的每个节点都包含指向前一个节点索引的链接,其中路径中的最后一个节点返回-1
或其他一些负数。