この質問は、このフォーラムやインターネットの他の場所で何度も聞かれていることを知っています。しかし、爪を伸ばして私を攻撃する前に、我慢してください。
私は初心者学習グラフです。私の演習の一環として、ここで Graph クラスにメソッド hasCycle() を追加するように指定されています http://homepage.cs.uiowa.edu/~sriram/21/fall05/ExamplePrograms/ReaderFiles/Chap13/dfs/dfs.java .
私のアプローチは、こちらのフォーラムで提案されているように DFS を実行しています。
しかし、最初のリンクで既存の dfs メソッドを使用してこれを実装する方法に苦労しています。
これまでの私のアプローチは次のとおりです。
public boolean hasCycle(int start)
{
vertexList[start].wasVisited = true;
for(int j = 0; j < MAX_VERTS; j++)
{
if(adjMat[start][j]==1 && vertexList[j].wasVisited==true)
return true;
else if(adjMat[start][j]==1 && vertexList[j].wasVisited==false)
{
vertexList[start].wasVisited == true;
hasCycle(j);
}
}
return false;
}
ここで 2 つの問題があります。1 つ目は、theGraph.dfs(); 行の代わりに DFSApp クラスで hasCycle() を呼び出すと、無限再帰に陥ります。第二に、宿題で必要な dfs() を使用していません。
ここで私が間違っていることに関して、正しい道への方向性は高く評価されます。
今のところ、dfs() を使用せずに、正しい個別の hasCycle() メソッドを実装することに集中しています。