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

问题描述 投票:0回答:5

我需要帮助为 Java 中的单链表创建

int size();
方法。

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

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

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

java list linked-list size
5个回答
10
投票

您可以做出的最大改进是使用 Java 编码约定并使用驼峰式局部变量。

你可以这样写。

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;
}

如您所见,当添加元素时,大小会增加,而当删除元素时,它的 id 会减少,这样您就必须遍历列表来获取大小。


4
投票

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


1
投票

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

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

1
投票

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

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

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

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

        length++;
    }
    return length;
}

0
投票

您可以使用一个简单的 while 循环来确定链表中有多少个节点,我总是创建一个新的当前变量来跟踪我在列表中的位置。

public int addTwoNumbers(ListNode l1) {
    int l1Len = 0;
    ListNode current = l1;

    while(current != null)
    {
        current = current.next;
        l1Len = l1Len + 1;
    }

    return l1Len;
}
© www.soinside.com 2019 - 2024. All rights reserved.