如何通过节点向量迭代并检查欧拉电路?

时间:2017-04-18 21:25:22

标签: c++ graph

我如何通过节点矢量并检查它是否仅通过边缘一次? (欧拉电路)。如果它是欧拉电路,我怎么能打印组合?在这里我尝试了但它一直给我"没有匹配功能来调用DFSUtil"。

#inlucde <iostream>
#include <vector>
#include <string>
using namespace std;

unsigned int c = 0;
class node
{
public:
    string a;
    vector<node> connect;
    node(string b)
    {
        a = b;
        c++;
    }
     bool isEulerCircuit();
     bool isConnected();
     void DFSUtil(node &a,bool visited[]);
    void add_connect(node &n)
    {
        connect.push_back(n);
    }


};
void node::DFSUtil(node &a,bool visited[])
{
    visited[c] = true;
    vector<node>::iterator i;
    for(i = connect.begin(); i != connect.end(); i++)
    {
        node s = *i;
        if(!visited[c])
        {
            DFSUtil(*i,visited[c]);
        }
    }
 }

int main(int argc, char*argv[])
{
    node A("A"),B("B"), C("C");
    vector<node> AllNodes;
    AllNodes.push_back(A);
    AllNodes.push_back(B);
    AllNodes.push_back(C);

    A.add_connect(B);
    B.add_connect(C);
}

1 个答案:

答案 0 :(得分:0)

你的行

DFSUtil(*i,visited[c]);

使用params Node和bool进行调用,假设“c”实际上是在某处定义的。我在你的列表中没有看到它的定义。请参阅“最小可编辑示例”

但是,您已经定义了一个引用节点和bool数组的方法:

void node::DFSUtil(node &a,bool visited[])

我想编译器抱怨你使用这些参数的调用与它可以找到的任何方法或函数都不匹配。

您的商家信息导致的其他错误:

main.cpp(39): error C2065: 'c': undeclared identifier
main.cpp(41): error C2065: 'connection': undeclared identifier
main.cpp(41): error C2228: left of '.begin' must have class/struct/union
main.cpp(41): note: type is 'unknown-type'
main.cpp(41): error C2228: left of '.end' must have class/struct/union
main.cpp(41): note: type is 'unknown-type'
main.cpp(44): error C2065: 'c': undeclared identifier
main.cpp(46): error C2065: 'c': undeclared identifier
main.cpp(46): error C2660: 'node::DFSUtil': function does not take 1 arguments

您的商家信息还存在一系列其他问题,例如每次创建连接时都会复制节点。

而不是让其他人在这里为你编写软件。尝试提出一些问题,以缩小您遇到问题的一个方面。一次一个方法测试你的解决方案,而不是“整个事情不起作用,谁能解决它?”