首页 > 其他分享 >移除链表元素

移除链表元素

时间:2024-09-22 11:21:12浏览次数:3  
标签:head cur val 元素 next 链表 移除 prev

移除链表元素

在这里插入图片描述

思路:
1.首先判断链表是否为空,若为空直接返回head(null)
2.若链表不为空,让prev记住要删除节点的前一个位置,cur指向要删除的元素位置,若cur指向的val==要删除的值,就让prev.next指向cur.next
3.因为cur是从head的下一个节点位置开始判断的,就没有判断头节点是否为要删除的元素,最后用if语句判断收尾
解决代码如下

    public ListNode removeElements(ListNode head, int val) {
    //首先判断链表是否为空,若为空直接返回head(null)
        if(head==null){
            return head;
        }
        ListNode prev=head;
        ListNode cur=head.next;
        //若链表不为空,让prev记住要删除节点的前一个位置,
        //cur指向要删除的元素位置,
        //若cur指向的val==要删除的值,就让prev.next指向cur.next`
        while(cur!=null){
            if(cur.val==val){
                prev.next=cur.next;
                cur=cur.next;
            }else{
                prev=cur;
                cur=cur.next;
            }
        }
        //因为cur是从head的下一个节点位置开始判断的,
        //就没有判断头节点是否为要删除的元素,最后用if语句判断收尾 
        if(head.val==val){
            head=head.next;
        }
        return head;
    } 
    } 

标签:head,cur,val,元素,next,链表,移除,prev
From: https://blog.csdn.net/2302_81707171/article/details/142433116

相关文章

  • 链表的中间结点
    链表的中间结点思路1:1.若链表为空,直接返回null2.若链表不为空,我们可以先求的链表的长度,让得到的链表长度/2,再让ListNodecur=head,cur走上链表长度/2次,就可以返回中间节点了publicintsize(ListNodehead){if(head==null){return0;......
  • 返回数组中的最大元素个数
    /***返回数组中的最大元素个数*约束:*数组大小1<=size<=10to5*数组元素大小1<=arrList[i]<=10to7*@paramcandles*@return*/publicstaticintbirthdayCakeCandles(List<Integer>candles){if(cand......
  • [Java基础]安全删除列表元素
    普通遍历中删除ArrayList<Integer>arr=newArrayList<>();arr.add(1);arr.add(2);arr.add(3);arr.add(4);arr.add(5);for(Integeri:arr){if(i==2){arr.remove(i......
  • Vue学习笔记6:分别使用纯JavaScript和Vue的v-if 指令来有条件地渲染网页元素
    0缘起有时我们的网页需要根据需要用户的选择展示不同的页面元素。例如:<p>你喜欢哪种水果?</p><p> <label> <inputtype="radio"value="苹果"name="fruit"/> 苹果 </label></p><p> <label> <inputtype="ra......
  • 双链表定义与操作
    双链表的定义 与单链表不同的地方在于指针,双链表的指针多了个前向指针。点击查看代码typedefstructDNode{ ElemTypedata; DNode*prior,*next;}*DLinkList,DNode;双链表的初始化(initial) 双链表的创建也可分为带头节点和不带头节点(这里只放了不带头的初始化)。......
  • 链表(3)链表的基本操作
            单链表的基本操作主要有;①创建链表;②输出链表;③査我结点;④插入结点,⑤鹏除结点;⑥重组链表。下面分别进行介绍。一.创建链表        创建链表是指在程序运行时,进行动态内存分配,创建若千个结点,并把这些结点连接成串,形成一个链表。在进行动态......
  • Leetcode 378. 有序矩阵中第 K 小的元素
    1.题目基本信息1.1.题目描述给你一个nxn矩阵matrix,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个不同的元素。你必须找到一个内存复杂度优于O(n^2)的解决方案。1.2.题目地址https://leetcode.cn/problem......
  • 【数据结构】链表及其代码实现
    之前我们已经学习了顺序表,现在让我们来进行对链表的学习!!!【顺序表详解】......
  • [leetcode刷题]面试经典150题之5多数元素元素(简单)【附Boyer-Moore 投票算法(摩尔投票法
    很有意思的一个题,想了半天没想出来,最后发现两行代码就做出来了。写完后学习到还可以用Boyer-Moore投票算法,能减小空间复杂度,我把它写在后面,可以进一步学习。题目  多数元素给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊......
  • 19080 反转链表
    ###思路1.初始化三个指针:`prev`(前驱节点),`curr`(当前节点),`next`(后继节点)。2.遍历链表,将当前节点的`next`指针指向前驱节点,实现反转。3.移动三个指针,继续反转下一个节点,直到遍历完整个链表。4.最后,将头节点指向新的头节点(即原链表的最后一个节点)。###伪代码```funct......