プログラムの深さ優先検索の作成に問題があります。これまでのところ、エッジのクラスとリージョンのクラスがあります。接続されているすべてのエッジをリージョンの 1 つのノード内に格納したいと考えています。既に実装した getKey() 関数によって何かが接続されているかどうかがわかります。2 つのエッジが同じキーを持つ場合、それらは接続されています。次のリージョンでは、そのリージョン内に接続されたエッジの別のセットを保存したいなどです。ただし、DFS を完全には理解しておらず、実装に問題があります。いつ、どこで DFS を再度呼び出すべきかわかりません。どんな助けでも大歓迎です!
class edge
{
private:
int source, destination, length;
int key;
edge *next;
public:
getKey(){ return key; }
}
class region
{
edge *data;
edge *next;
region() { data = new edge(); next = NULL; }
};
void runDFS(int i, edge **edge, int a)
{
region *head = new region();
aa[i]->visited == true;//mark the first vertex as true
for(int v = 0; v < a; v++)
{
if(tem->edge[i].getKey() == tem->edge[v].getKey()) //if the edges of the vertex have the same root
{
if(head->data == NULL)
{
head->data = aa[i];
head->data->next == NULL;
} //create an edge
if(head->data)
{
head->data->next = aa[i];
head->data->next->next == NULL;
}//if there is already a node connected to ti
}
if(aa[v]->visited == false)
runDFS(v, edge, a); //call the DFS again
} //for loop
}