• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

删除链表中的节点(移除链表元素)

互联网 diligentman 2周前 (02-18) 9次浏览

删除链表中的节点

删除链表节点—力扣链接

移除链表元素—力扣节点

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

`输入: 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) {
        //可以自己构造一个链表进行测试,也可以根据链接去力扣中测试
    }
} 

程序员灯塔
转载请注明原文链接:删除链表中的节点(移除链表元素)
喜欢 (0)