3

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

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

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

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

4

4 回答 4

9

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

你可以这样写。

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

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

来自链表

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

正如你所看到的,当一个元素被添加时,尺寸会增加,而当一个元素被移除时,它的 id 会减少,这样你就不必遍历列表来获取尺寸。

于 2012-09-27T08:30:42.180 回答
4

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

于 2012-09-27T08:30:12.267 回答
1

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

public static int size(Node currNode){
    int count = 0;
    while (currNode!= null){
        count++;
        currNode=currNode.getNext();
    }
    return count;
}
于 2015-07-05T20:55:35.257 回答
1

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

我们可以使用 while 或 for 循环来实现这一点。

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

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

        length++;
    }
    return length;
}
于 2017-07-23T11:13:08.657 回答