我尝试在给定两个字符串时创建深度优先搜索算法。我已经构建了我的图表但是我遇到了广度优先搜索算法的问题。我不完全确定我应该从我的哈希函数中得到的int a和int b应该怎么做。
上下文.... 顶点节点的名称为ex。约翰和一组字符串,这些是约翰是朋友的其他名字的列表。我在主要的前两个名字。约翰和玛丽,我想打印出连接这两个名字的路径。我只有整数BFS的代码,这就是为什么我有点困惑。任何帮助将不胜感激。
struct vertex_node {
string name;
set <string> edges;
};
void Graph::paths(string start, string end)
{
bool visited[capacity];
for(int i=0; i<capacity; i++){
visited[i]=false;
}
queue <string> q;
int a = hash_string(start) % capacity;
int b = hash_string(end) % capacity;
visited[a]=true;
q.push(start);
visited[a]=true;
while(!q.empty()){
start = q.front();
cout << start << " ";
q.pop();
for(int i=0;i < courses->get_capacity(); i++){
for(std:: set<string> :: iterator j = list[]->edges.begin();
j !=list[i]->edges.end(); j++){
if(!visited[*j]){
visited[*j] = true;
q.push(*j);
}
}
}
}
答案 0 :(得分:0)
for(std:: set<string> :: iterator j = list[i]->edges.begin();
j !=list[i]->edges.end(); j++){
if(!visited[a]){
visited[a] = true;
q.push(end);
}
}
在这里,你通过迭代器list[i]
遍历j
,但你从不关心j
。您只是多次确认访问了start
(通过查看!visited[a]
)