警告:控制到达非void函数C++的结尾

ang*_*ist -1 c++

我正在尝试实现Prims算法来查找给定图形的最小生成树.代码现在编译,但可执行文件(而不是打印MST)打印"分段错误:11".而且,我得到一个警告,:

Warning: control reaches end of non-void function
Run Code Online (Sandbox Code Playgroud)

有人能帮我理解它有什么问题吗?提前致谢.

double Graph::getWeight(int v, int w)
{
    if(edge(v,w))
    {
        Node* t = adj[v];
        while(t != NULL)
        {
            t = t->next;
            if((t ->v) == w)
            return t->weight;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*eld 7

警告是指您的getWeight函数表示它将返回a double但实际上仅double在某些条件下返回a 的事实.如果任一if语句为false(即if edge(v,1)为false或if t->v == w始终为false),则该函数不返回任何内容.

如果条件不正确,也许您想要返回一些默认值.

这是否是导致细分错误的原因是另一回​​事.