剑指 Offer 18. 删除链表的节点
class Solution { public ListNode deleteNode(ListNode head, int val) { ListNode p = head; // 例外情况,如果删除的是第一个节点,那就直接返回第一个节点 if (p.val == val) { return head.next; } while (p.next != null) { if (p.next.val == val) { // 当前节点指向待删除节点的下一个节点,这样子就成功删除了 p.next = p.next.next; return head; } p = p.next; } return head; } }
cur.val == val
,那就将pre的next
指向cur的next
class Solution { public ListNode deleteNode(ListNode head, int val) { ListNode pre = head; ListNode cur = head.next; // 也要判断第一个节点是否为要删除的节点 if (head.val == val) { return head.next; } while (cur != null) { if (cur.val == val) { // 如果当前节点是待删除的节点,那就将 pre的next 指向 cur的next pre.next = cur.next; return head; } pre = cur; cur = cur.next; } return head; } }