我对 Java 很陌生,并且给了我这个 Linkedlist 设置,我需要使用递归或 while 循环来编写返回 linkedList 大小的大小函数。我想当这个链表设置没有初始化 Node、head 等时,我对如何执行大小函数感到非常困惑。
package list;
public class LinkedList {
public int value;
public LinkedList next;
public LinkedList (int value, LinkedList next) {
this.value = value;
this.next = next;
}
public static LinkedList list () {
return new LinkedList(1, new LinkedList(2, new LinkedList(3, null)));
}
public int size () {
int size = 0;
Node Current = head;
while(Current.next != null)
{
Current = Current.next;
size++;
}
return size;
}
}
最佳答案
在您当前的表述中,您的 LinkedList
实例实际上是节点和列表。没关系,但这意味着列表中没有可区分的“头”...
在这种情况下,解决方法是更改:
Node Current = head;
至
LinkedList current = this;
(并且,是的,size
变量应以 1
开头。在此公式中,空列表由 null
表示。如果您正在对 LinkedList
实例调用 size()
,则列表的大小必须至少为 1。)
@Konrad 指出“列表本身应该封装节点。”
实际上这是一种设计选择。如果您遵循 OO 设计原则,那么就应该遵循。然而,在某些情况下,实际上您不想这样做。有时需要“牺牲”抽象来获得更好的性能或降低内存利用率。
关于java - 链表的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550239/