我需要帮助为 Java 中的单链表创建
int size();
方法。
这是我到目前为止所拥有的,但它没有返回列表的正确大小。
public int size()
{
int size = 0;
Node CurrNode = head;
while(CurrNode.next != null)
{
CurrNode = CurrNode.next;
size++;
}
return size;
}
有人可以帮我用Java实现这个方法吗?
您可以做出的最大改进是使用 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 会减少,这样您就必须遍历列表来获取大小。
最简单的方法是让变量跟踪初始化为 0 的大小。然后,每次添加节点时,它只是 size++,或者当您删除节点时,它只是 size-- 。然后你的 size() 方法只需要返回这个变量而不需要遍历列表。
您需要将列表传递给您的方法并检查 currNode!= null :
public static int size(Node currNode){
int count = 0;
while (currNode!= null){
count++;
currNode=currNode.getNext();
}
return count;
}
嗯,计算长度的最简单方法是检查 currentNode 是否!=null 并保持 currentNode 递增。
我们可以使用 while 或 for 循环来实现这一点。
下面是使用 for 循环的示例。
public int getLength(){
ListNode temp = head;
for(temp = head; temp!=null; temp=temp.getNextNode()){
length++;
}
return length;
}
您可以使用一个简单的 while 循环来确定链表中有多少个节点,我总是创建一个新的当前变量来跟踪我在列表中的位置。
public int addTwoNumbers(ListNode l1) {
int l1Len = 0;
ListNode current = l1;
while(current != null)
{
current = current.next;
l1Len = l1Len + 1;
}
return l1Len;
}