我需要帮助制作 int size(); Java 中循环链表的方法。这是我试过的。是真的吗?
I need help making the int size(); method for a Circularly linked list in Java. This is what I have tried. Is it true?
public int size(){
node n = head;
node m = tail;
int size = 0;
While(n!=m){
size++;
n=n.getNext();
}
return size;
}
这段代码正确吗?我不太确定,我想问问你们的意见
您的代码逻辑的问题是您从不检查列表的最后一个元素。因此,你的method
将return链表的元素个数减一。要解决此问题,请将 size
初始化为 1 而不是 0。如果您担心大小为 0 的链表,请使用 if 语句检查头部或尾部是否为空。它应该是这样的,
public int size(){
node n = head;
node m = tail;
if(n == null){
return 0;
}
int size = 1;
While(n!=m){
size++;
n=n.getNext();
}
return size;
}
否此代码不正确。它将 return 尺寸比实际尺寸小一号。一旦条件 n!=m 为假,while 循环将停止工作。这将导致尺寸不正确。所以我建议你从 int size=1; 开始。或者你可以在 return 之前执行一次 size++,在 while 块
之外
您的代码将 return 小于实际大小,也就是说您的 Head 和 Tail 指向同一节点,这意味着列表中只有一个节点。您的代码 returns 0 有人会接受 1。
do{
//your stuff
} while();
这应该有效。
public int size(){
node n = head;
node m = tail;
int size = 0;
While(n!=m){
size++;
n=n.getNext();
}
return size;
}
这段代码正确吗?我不太确定,我想问问你们的意见
您的代码逻辑的问题是您从不检查列表的最后一个元素。因此,你的method
将return链表的元素个数减一。要解决此问题,请将 size
初始化为 1 而不是 0。如果您担心大小为 0 的链表,请使用 if 语句检查头部或尾部是否为空。它应该是这样的,
public int size(){
node n = head;
node m = tail;
if(n == null){
return 0;
}
int size = 1;
While(n!=m){
size++;
n=n.getNext();
}
return size;
}
否此代码不正确。它将 return 尺寸比实际尺寸小一号。一旦条件 n!=m 为假,while 循环将停止工作。这将导致尺寸不正确。所以我建议你从 int size=1; 开始。或者你可以在 return 之前执行一次 size++,在 while 块
之外您的代码将 return 小于实际大小,也就是说您的 Head 和 Tail 指向同一节点,这意味着列表中只有一个节点。您的代码 returns 0 有人会接受 1。
do{
//your stuff
} while();
这应该有效。