Java 是否跳过链接列表中的其他元素?

Java 是否跳过链接列表中的其他元素?,java,linked-list,Java,Linked List,我试图在Java中删除链表中的所有其他元素 public static IntNode everyOther(IntNode front){ IntNode link = front; if(link.next == null){ return; } while(link.next != null){ link.next = link.next.next; } return } 到目前为止,我已经知道了这一点

我试图在Java中删除链表中的所有其他元素

public static IntNode everyOther(IntNode front){

    IntNode link = front;

    if(link.next == null){
        return;
    }

    while(link.next != null){
        link.next = link.next.next;
    }
    return
}

到目前为止,我已经知道了这一点,但当我尝试执行时,它会抛出一个错误。

也许使用递归来遍历和擦除会更有意义?我不明白,如果要编辑节点本身以外的所有内容,为什么需要返回节点?在我看来,回归似乎毫无意义

public static void everyOther(IntNode front){

    if(link.next == null){
        return;
    }
    IntNode link = front;
    IntNode toErase = link.next;

    if(toErase.next != null)
    {
        link.next = toErase.next;
        everyOther(toErase.next);
    }
}

也许使用递归进行遍历和擦除更有意义?我不明白,如果要编辑节点本身以外的所有内容,为什么需要返回节点?在我看来,回归似乎毫无意义

public static void everyOther(IntNode front){

    if(link.next == null){
        return;
    }
    IntNode link = front;
    IntNode toErase = link.next;

    if(toErase.next != null)
    {
        link.next = toErase.next;
        everyOther(toErase.next);
    }
}

检查link.next.next上的null。如果列表只有2个元素怎么办?一般来说,如果它有偶数个元素会怎么样?@PeterKuebler如果link.next是最后一行,我们会不会把它赋值为null?像link.next=link.next.next这样的代码可能过于聪明,很容易推理。试着找出并命名
link.next
thing,你会看到哪里缺少一个检查。在link.next.next上检查null。如果列表只有2个元素怎么办?一般来说,如果它有偶数个元素会怎么样?@PeterKuebler如果link.next是最后一行,我们会不会把它赋值为null?像link.next=link.next.next这样的代码可能过于聪明,很容易推理。试着找出并命名这个
链接。下一步,你会看到支票缺失的地方。