我正在尝试编写一个简单的方法来计算链表中的所有节点。我知道链接列表中有7个项目,但它只返回其中的6个。
这是我的方法
public int count() {
int count = 0;
for (ListNode n = head; n.next != null; n = n.next) {
count++;
}
return count;
}
这是我的ListNode.java
public class ListNode {
String name; // a name in the list
ListNode next; // the next node in the list
ListNode prev; // the previous node in the list
/**
* Constructor with just a name. This form would be most useful when
* starting a list.
*/
public ListNode(String name) {
this.name = name;
next = null;
prev = null;
}
/**
* Constructor with a name and a reference to the previous list node. This
* form would be most useful when adding to the end of a list.
*/
public ListNode(String name, ListNode node) {
this.name = name;
next = null;
prev = node;
}
}
答案 0 :(得分:3)
结束节点将失败n.next != null
但它是LinkedList的一部分,所以你应该考虑这一点。听起来你只是有一个索引错误。
答案 1 :(得分:2)
我明白了。
for (ListNode n = head; n != null; n = n.next)
n.next!= null是错误。
答案 2 :(得分:1)
你想循环,直到n == null。就目前而言,你正在停止一条短路。
答案 3 :(得分:1)
试试这个
public int count() {
int count = 0;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
return count;
}
答案 4 :(得分:0)
那是因为你从0开始计数,忽略了第一个节点。
而是初始化count=1
;
答案 5 :(得分:0)
public int count() {
int count = 0;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
return count;
}
答案 6 :(得分:0)
n.next != null
是你的问题。将其更改为n!=null
Example :
List : 1--> 2 -->3--> 4-->null
Count : 1--> 2-->3-->here n=4 and n.next=null. So, your loop will break and count will be 3 (i.e; the last node will not be counted.)
答案 7 :(得分:0)
您没有计算最后一个节点。当你到达要计数的最后一个元素时,n.next将为null,因此count永远不会递增。您可以尝试使用以下循环:
ListNode n = head;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
答案 8 :(得分:0)
您应首先检查null。如果不是0,则设置' counter = 1'在你循环之前。
if (_first == null) return 0;
int count = 1;
for (ListNode n = _first; n.Next != null; n = n.Next)
{
count++;
}
return count;