问题:
我想应用哈希表方法来检测Java中的循环,并且已经实现了一种方法。
谁能指导我是否正确?
实现方式:
public void detectLoop1()
{
Node tnode = head;
int i=0;
//Initialize the HashTable
Hashtable ht=new Hashtable();
//Traverse the list and while traversing if you find the address of
//the hittable is already in hashtable break the loop else insert the elements in hashtable.
while (tnode != null)
{
System.out.print(tnode.data+"->");
if(ht.contains(tnode)){
System.out.println("Found a Loop");
break;
}
ht.put(i, tnode);
i++;
tnode = tnode.next;
}
}
最佳答案
public void detectLoop1()
{
Node tnode = head;
Set nodes = new HashSet();
while (tnode != null)
{
System.out.print(tnode.data+"->");
if(!nodes.add(tnode)){
System.out.println("Found a Loop");
break;
}
tnode = tnode.next;
}
}
不知道当您将键设置为
if(ht.contains(tnode))
时如何使用ht.put(i, tnode);