我一個人在這個項目上工作,可以使用另一組眼睛來看看這個,看看我做錯了什麼。第一個循環無限運行。調試BFS樹travesal算法
public void bfs(String start)
{
//Initial Case
add_queue.add(start);
graph.visit(start);
Iterator<String> neighbors;
String neighbor;
while(!add_queue.empty())
{
neighbors = graph.neighbors(start);
neighbor = neighbors.next();
graph.visit(neighbor);
add_queue.add(neighbor);
while(neighbors.hasNext())
{
neighbor = neighbors.next();
if(!graph.isVisited(neighbor)) //If vertex is not visited it is new and is added to the queue
{
add_queue.add(neighbor);
graph.visit(neighbor);
}
}
start = add_queue.remove();
remove_queue.add(start); //transfers vertex from add_queue to remove queue so that the order that the vertices were traversed is stored in memory
}
}
我認爲傑克的建議修正了它。堆棧中至少有一個頂點。我拿出neighbors.next()賦值行,並在第一個循環的開始處添加和訪問行,它工作。感謝所有及時有效的幫助。 – Nathan 2010-06-04 20:53:01