我有一个我似乎无法弄清楚的功能。
说明:
返回此列表中第一次出现的指定元素的索引, 如果此列表不包含该元素,则返回-1 index是从0开始的(即,第一个'真实'节点(在虚拟标题之后)是索引0)。 @param x搜索
的元素所以,这里发生的是函数在Object中传递,在我的例子中是一个数字。 IndexOf应该通过数字列表,看看是否有任何匹配。如果找到匹配项,它将返回对象的INDEX。我的问题是它只返回初始化的结果。我该怎么做才能返回索引?
public int indexOf(Object x)
{
Node current = head;
int result = 0;
for(int i = 0; i < elementCount; i++){
if(x.equals(current.data)){
result = i;
return result;
}
}
return result;
}
答案 0 :(得分:1)
你的'当前'总是指向头部,所以即使你为列表中的所有元素运行for循环,你在每个阶段都将'x'与头部中的任何东西进行比较。
因此,在你的for循环中,在测试之后,你应该增加'current'。
for(int i = 0; i < elementCount; i++){
if(x.equals(current.data)){
result = i;
return result;
}
current = current.next; // increment current pointer so that it
// points to the next node in the list
}
另外,理想情况下,不应将结果初始化为0,而应初始化为-1。因此,如果根本找不到x,则您的方法将返回-1(而不是0,这是欺骗)。