我需要帮助制作 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();

这应该有效。