给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
思路:
单链表遍历,遇到 当前指针的下一个值是 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;
}
链接:力扣