删除链表中的节点

删除链表节点—力扣链接

移除链表元素—力扣节点

题目内容:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。
输入输出示例:

`输出: head = [4,5,1,9], val = 5输入: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9起源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。` *   1*   2*   3*   4*   5*   6*   7

代码实现

package 移除链表元素;[url]https://www.douban.com/doulist/136184767/[/url][url]https://www.douban.com/doulist/136184768/[/url][url]https://www.douban.com/doulist/136184765/[/url][url]https://www.douban.com/doulist/136184766/[/url][url]https://www.douban.com/doulist/136184762/[/url]/** * 力扣网址:https://leetcode-cn.com/problems/remove-linked-list-elements/description/ * 力扣网址:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/submissions/ */class ListNode {      int val;      ListNode next;      ListNode() {}      ListNode(int val) { this.val = val; }      ListNode(int val, ListNode next) { this.val = val; this.next = next; }}public class RemoveElements {    public static ListNode removeElements(ListNode head, int val) {        //间接遍历链表,遇到与节点的值雷同的就删除        //1.首先本人设置一个傀儡头节点        ListNode head1 = new ListNode(0);        //2.将链表接在傀儡节点的前面        head1.next = head;                //3.pre是标记节点,因为删除节点的时候,个别要失去删除节点的前一个节点        ListNode pre = head1;        ListNode cur = head;        //4.开始遍历        while (cur != null){            //5.遇到雷同的就删除            if (cur.val == val){                pre.next = cur.next;            }else {//6.否则就向前面持续遍历                pre = cur;            }            cur = cur.next;//因为删不删除节点,cur都会向前面挪动,所以独自写        }        return head1.next;    }    public static void main(String[] args) {        //能够本人结构一个链表进行测试,也能够依据链接去力扣中测试    }}