无法解决双向链表的indexOf函数

时间:2013-11-14 02:07:50

标签: java indexing

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

说明:

返回此列表中第一次出现的指定元素的索引, 如果此列表不包含该元素,则返回-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;
}

1 个答案:

答案 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,这是欺骗)。