题目
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
示例
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
思路分析
已知:给定单向链表的头指针head+待删除结点值val
未知:结点值为val的位置+节点值为val的待删除结点有几个
解决思路:
1、首先,需要定义两个新节点prev和cur,其中cur用于在遍历链表的过程中去寻找cur.val == val的结点;而prev指向cur的前一个节点,用于在找到val值的节点后与cur一同删除值为val的结点;
2、需要判断链表是否为空,为空则直接返回,不为空则进行后续寻找;
3、再次,通过cur来遍历整个链表,在遍历过程中若出现cur.val == val,则进行删除;否则当cur == null 后,链表循环结束,返回head;
4、最后,当找到值为val的节点时,需要判断该节点的位置;若该节点为头节点,则删除完节点后,还需要更新head的值;若该节点不为头节点,则不需要更新head值。