removeElement的删除多个相同元素
按照代码逻辑,递归删除元素应该是有多个相同的都会删除,为什么本地测试结果只会删除一个呢?
42
收起
正在回答
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; }
感谢提醒。有时间我修改一下代码。抱歉!
继续加油!:)
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星