Java 是否跳过链接列表中的其他元素?
我试图在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 } 到目前为止,我已经知道了这一点
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这样的代码可能过于聪明,很容易推理。试着找出并命名这个链接。下一步,你会看到支票缺失的地方。