public static Node deleteAll(Node front, String target){
    if (front == null){ return null;}
    if (front.data.equals(target)){
        return deleteAll(front.next,target);
    }
    front.next=deleteAll(front.next,target);
    return front;
}

我正在尝试解决此问题,但这使我感到困惑。为什么不总是将其生成为null,因为最后的前端将等于null。

最佳答案

考虑此类问题时,最好先拿一支笔和纸画些东西,然后再进行深思熟虑。

例如
......
输入
list :[3]-[2]-[5]-空
目标:2
................

首次通话=>结果
deleteAll(N[3], 2) => [3]但是接下来是deleteAll(N[2], 2)List = [3]-deleteAll(N[2], 2)
第二次通话
deleteAll(N[2], 2) => deleteAll(N[5], 2)下一个节点现在跳过2List = [3]-deleteAll(N[5], 2)
第三次通话
deleteAll(N[5], 2) => [5]但是接下来是deleteAll(null,2)List = [3]-[5]-deleteAll(null, 2)
延迟调用返回null

列表最终没有2s干净List = [3]-[5]-null

关于java - 递归删除链表中所有出现的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48724753/

10-12 14:13