在Java中测量单链表的大小/长度?

时间:2012-09-27 08:23:57

标签: java list linked-list size

我需要帮助为Java中的单链表制作int size();方法。

这是我到目前为止所做的,但它没有返回列表的正确大小。

public int size()
{
    int size = 0;
    Node CurrNode = head;
    while(CurrNode.next != null)
    {
        CurrNode = CurrNode.next;
        size++;     
    }
    return size;
}

有人可以帮我在Java中实现这个方法吗?

4 个答案:

答案 0 :(得分:8)

您可以做的最大改进是使用Java Coding Convension并使用camelCase局部变量。

你可以这样写。

public int size() {
   int size = 0;
   for(Node n = head; n.next != null; n = n.next)
       size++;     
   return size;
}

当你在Java中重写一个常用的类时,如果你想要一个更好的做事方式,我建议你看看它是如何完成的。

来自LinkedList

/**
 * Returns the number of elements in this list.
 *
 * @return the number of elements in this list
 */
public int size() {
    return size;
}

正如你所看到的,当添加一个元素时,size会递增,当一个元素被删除时,它会减少id,从而节省你必须遍历列表以获得大小。

答案 1 :(得分:4)

最简单的方法是使变量跟踪初始化为0的大小。然后每次添加节点时,只需要删除节点时的大小为++或size。你只需要在size()方法中返回此变量而不遍历列表。

答案 2 :(得分:1)

您需要将列表传递给您的方法并检查currNode!= null:

public static int size(Node currNode){
    int count = 0;
    while (currNode!= null){
        count++;
        currNode=currNode.getNext();
    }
    return count;
}

答案 3 :(得分:1)

嗯,计算长度的最简单方法是检查currentNode!= null并保持currentNode递增。

我们可以使用while或for循环来实现它。

以下是使用for循环的示例。

public int getLength(){
    ListNode temp = head;
    for(temp = head; temp!=null; temp=temp.getNextNode()){

        length++;
    }
    return length;
}