0

我有一个我似乎无法弄清楚的功能。

指示:

返回此列表中指定元素第一次出现的索引,如果此列表不包含元素索引,则返回 -1,索引是从 0 开始的(即,第一个“真实”节点(在虚拟头之后)是索引 0)。@param x 要搜索的元素

所以,这里发生的是函数在一个对象中传递,在我的例子中是一个数字。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;
}
4

1 回答 1

1

您的“当前”始终指向头部,因此即使您正在为列表中的所有元素运行 for 循环,您在每个阶段都将“x”与头部中的任何内容进行比较。

因此,在您的 for 循环中,在您的测试之后,您应该增加“当前”。

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 in,您的方法将返回 -1(而不是 0,这是欺骗性的)。

于 2013-11-14T02:16:24.213 回答