我在代码中找不到错误。当我在终端中运行它时,它会显示警告消息,而不是错误,但仍不显示任何结果。我正在使用dfsrecursive,BFS,bfs helper和DFS函数。请帮忙!
void
Graph::dfs()
{
// reset the labels of all nodes and edges, then calls dfsRecursive on every unexplored node
Node* v=0;
resetLabels();
map<string, Node*>::iterator w;
vector<Edge*> incidentEdges;
for(w= this->nodeTable->begin(); w != this-> nodeTable-> end(); w++)
{
if(w->second->getLabel() == (NodeLabel::unexplored))
dfsRecursive(w->second);
}
}
void
Graph::dfsRecursive(Node* v)
{
// recursively perform a depth-first search starting from the input node v.
vector<Edge*> incidentEdges = v->getIncidentEdges();
for(int e=0; e < incidentEdges.size(); e++)
{
if(incidentEdges[e]-> getLabel() == EdgeLabel::unexplored){
Node* w = incidentEdges[e]-> opposite(v);
if(w->getLabel() == NodeLabel::unexplored){
incidentEdges[e]-> getLabel() == (EdgeLabel::discovery);
w-> setLabel(NodeLabel::visited);
}
}
else
incidentEdges[e]-> setLabel(EdgeLabel::back);
}
}
void
Graph::bfs()
{
int size = 0;
int* bfsarray[size];
int begin = 0;
int** adjMatrix;
int noOfNodes;
bool* visited = new bool[noOfNodes];
for(int i =0; i <noOfNodes; i++)
{
visited[i] = false;
list<int> queue;
visited[begin] =true;
queue.push_back(begin);
while(!queue.empty()){
begin = queue.front();
cout << begin;
queue.pop_front();
for(int i =0; i < noOfNodes; i++){
if(adjMatrix[begin][i] == 1 && !visited[i]){
visited[i] = true;
queue.push_back(i);
}
}
}
}
}
void
Graph::bfsHelper(Node* s)
{
vector<Edge*> incidentEdges = s-> getIncidentEdges();
if(s->getLabel() == NodeLabel::unexplored && s == nodeTable->begin()->second){
s->setLabel(NodeLabel::visited);
}
for(int i =0; i < s-> getIncidentEdges().size(); i++)
{
if(incidentEdges[i]-> getLabel() == (EdgeLabel:: unexplored))
{
Node* e = incidentEdges[i] -> opposite(s);
if(e->getLabel() == NodeLabel::unexplored)
{
incidentEdges[i] -> setLabel(EdgeLabel::discovery);
e->setLabel(NodeLabel::visited);
}
else{
incidentEdges[i]->setLabel(EdgeLabel::cross);
}
}
}
}
}