java - 链表的大小

标签 java linked-list

我对 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/

相关文章:

java - 对链表中的值进行排序

java - 如何将LinkedList中定义元素之前的所有元素移动到尾部?

java - Java 8 有尾调用优化吗?

java - OpenGL 图形工件

java - Java 中的引用是如何工作的?

java - 使用 Java 实现自定义链表中的方法

java - 如何计算我的链表中有多少个不同的节点?

java - Android-从字符串中删除 URL 百分号

java - 在 RequestMapping 问题中使用 @PathVariable 的 Controller 的特定 url

java - 为什么我的 Spring @Autowired 字段为空?