public void removeAll (int toRemove ,LinkedNode head) {
if (head == null) {
return null;
}
LinkedNode pre = head;
LinkedNode node = head.next;
while (node != null) {
if (node.data == toRemove) {
pre.next = node.next;
node = pre.next;
} else {
pre = pre.next;
node = node.next;
}
}
if (head.data == toRemove) {
head = head.next;
}
return head;
}
思路
难点在于如果链表开始的元素就是要删除的节点并且重复,例如:
1 -> 1 -> 3 -> 5 -> null
删除1
则不能一开始就删除头结点,那么从第二个节点开始删除,删除完成后再删除头结点