java——删除链表中等于给定值的所有元素
class ListNode{ int val ; ListNode next; public ListNode(int x) { val = x; } public ListNode(int[] arr) { if(arr == null || arr.length == 0) { throw new IllegalArgumentException("ARR CAN NOT BE EMPTY"); } val = arr[0]; //这个this是指实现这个内部类的对象 ListNode cur = this; for(int i = 1 ; i < arr.length ; i ++) { cur.next = new ListNode(arr[i]); cur = cur.next; } } public String toString() { StringBuilder res = new StringBuilder(); ListNode cur = this; while(cur != null) { res.append(cur.val + "->"); cur = cur.next; } res.append("NULL"); return res.toString(); } } public class Main { public static void main(String[] args) { int[] nums = {1,2,4,3,6,4,2}; ListNode head = new ListNode(nums); System.out.println(head); ListNode node = removeElement(head, 2); System.out.println(node); } //不设头节点 public static ListNode removeElement(ListNode head, int val) { //删除开始部分的节点 while(head != null && head.val == val) { head = head.next; } if(head == null) { return head; } //删除中间部分的节点 ListNode prev = head; while(prev.next != null) { if(prev.next.val == val) { prev.next = prev.next.next; }else { prev = prev.next; } } return head; } }