剑指 Offer 18. 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。


思路:

单链表遍历,遇到 当前指针的下一个值是 val 则把指针赋给下下一个节点,就可以删掉这个节点了。

需要注意的地方:

1.判空

很多大佬写得很好,作为参考写代码有帮助。

第一次有解题思路,但是不是很会遍历链表,看别人写的是:创建一个cur 节点指向头节点,然后一个一个条件排除后,通过 if(cur.next !=null) 就可以了,还是需要复习一下 链表的数据结构! 加油!

代码:

public ListNode deleteNode(ListNode head, int val) {

        if (head == null) return null;

        if (head.val == val) return head.next;

        ListNode cur = head;

        while (cur.next != null && cur.next.val != val){

            cur = cur.next;

       }

        if (cur.next != null)

            cur.next = cur.next.next;

        return head;

    }


链接:力扣

你可能感兴趣的:(剑指 Offer 18. 删除链表的节点)