removeElement的删除多个相同元素

removeElement的删除多个相同元素

按照代码逻辑,递归删除元素应该是有多个相同的都会删除,为什么本地测试结果只会删除一个呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

我在这一小节文字给出的代码确实只能删除一个元素,因为在以下代码中,见到 node.e 和要删除的 e 相等,直接返回 node.next 了,而没有处理后续链表:

if(node.e.equals(e)){
    size --;
    return node.next;
}


要想删除所有和 e 相同的节点,应该这么写:

private Node removeElement(Node node, E e){
    
    if(node == null)
        return null;
    
    // 先递归处理 node.next
    node.next = removeElement(node.next, e);
    
    // 再根据 node 的值判断应该返回什么
    if(node.e.equals(e)){
        size --;
        return node.next;
    }
    return node;
}


感谢提醒。有时间我修改一下代码。抱歉!


继续加油!:)

  • 可以写两个方法,removeElement和removeElements分别删除一个元素和多个元素

    2023-11-28 22:54:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师