我需要帮助使int size();方法在Java中的一个单链表。
这就是我到目前为止所知道的,但是它没有返回列表的正确大小。
public int size()
{
int size = 0;
Node CurrNode = head;
while(CurrNode.next != null)
{
CurrNode = CurrNode.next;
size++;
}
return size;
}有人能帮我用Java实现这个方法吗?
发布于 2012-09-27 16:30:42
您可以做的最大改进是使用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;
}正如您所看到的,当添加一个元素时,大小是递增的,而当一个元素被删除时,它是递减的,这样您就不必遍历列表来获取大小。
发布于 2012-09-27 16:30:12
最简单的方法是将跟踪大小的变量初始化为0。然后,每次你添加一个节点,当你删除一个节点时,它就是大小( size++ )。然后,size()方法只需返回此变量,而不遍历列表。
发布于 2015-07-06 04:55:35
您需要将列表传递给您的方法并检查currNode!= null:
public static int size(Node currNode){
int count = 0;
while (currNode!= null){
count++;
currNode=currNode.getNext();
}
return count;
}https://stackoverflow.com/questions/12617021
复制相似问题