以下代码中有些疑问

时间:2013-01-17 22:36:28

标签: visual-c++

看看下面的代码一次,通过澄清我的怀疑来帮助我。 我已经对我怀疑的每一行都表示怀疑。而且,它是巨大代码的一部分。所以请忽略变量声明和所有。

整个代码工作正常,编译时没有错误。

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

1 个答案:

答案 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或其他一些负数。