我需要帮助为Java中的单链表制作int size();
方法。
这是我到目前为止所做的,但它没有返回列表的正确大小。
public int size()
{
int size = 0;
Node CurrNode = head;
while(CurrNode.next != null)
{
CurrNode = CurrNode.next;
size++;
}
return size;
}
有人可以帮我在Java中实现这个方法吗?
答案 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中重写一个常用的类时,如果你想要一个更好的做事方式,我建议你看看它是如何完成的。
/**
* 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;
}