删除指定链表节点

118 阅读1分钟
    public ListNode deleteNode (ListNode head, int val) {
        // write code here
        if(head == null) return null;
        // 加入一个头结点
        ListNode res = new ListNode(0);
        res.next = head;
        // 前序节点
        ListNode pre = res;
        // 当前节点
        ListNode cur = head;
        while(cur != null) {
            // 目标节点
            if(cur.val == val) {
                // 断开当前节点
                pre.next = cur.next;
                break;
            }
            // 两个指针同时向后遍历
            pre = cur;
            cur = cur.next;
        }
        // 返回去掉头结点
        return res.next;
    }