衡量Java的尺寸/单链表的长度?(Measure size/length of singly li

2019-07-31 23:38发布

我需要帮助使int size(); 方法在Java单链表。

这是我到目前为止,但它不返回列表的正确尺寸。

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

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

Answer 1:

你可以做的最大改进是使用Java编码Convension并使用驼峰局部变量。

你可以这样写。

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递减,因此您不必遍历列表以获得大小。



Answer 2:

最简单的方法是将有变量,跟踪为0初始化大小则每次添加这是一个节点,只需尺寸++或size--当你删除一个节点。 您size()方法则只是有不用遍历链表返回这个变量。



Answer 3:

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

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


Answer 4:

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

我们可以使用,同时还是一个for循环来实现这一点。

下面是其中用于循环使用的例子。

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

        length++;
    }
    return length;
}


文章来源: Measure size/length of singly linked list in Java?