[英]How can i connect these nodes as a directed graph?
如何使用向量將這些節點連接為有向圖? 另外,我如何才能使它僅通過每個邊緣一次(歐拉循環)。
#include <string>
#include <iostream>
#include <vector>
using namespace std;
class node
{
public:
string a;
vector<node> connect;
node(string b)
{
a = b;
}
};
int main()
{
vector<node> AllNodes;
AllNodes.push_back(A);
AllNodes.push_back(B);
AllNodes.push_back(C);
}
為了制作邊緣,您需要每個節點的邊緣列表。 您已經在class node
conncection
成員中擁有了它。
您只需要添加到列表中即可。 因此,您可以執行以下操作:
A.connection.push_back(required_node);
如果您持有引用,則比對象的副本更好。 這樣可以節省內存。 因此,您可以圍繞此邏輯定義成員函數。
嘗試類似的操作,使用地址引用將連接添加到節點
class node
{
public:
string a;
vector<node> connect;
node(string b)
{
a = b;
}
void add_connect(node &n)
{
connect.push_back(n);
}
void print()
{
cout << "value: " << a << endl;
}
void print_connection()
{
for each (node var in connect)
{
cout << "conection of " << a << ": ";
var.print();
}
}
};
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);
A.print();
A.print_connection();
B.print();
B.print_connection();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.