首页 > 其他分享 >两种方式讲链表节点删除

两种方式讲链表节点删除

时间:2023-10-30 23:34:52浏览次数:28  
标签:p2 p1 return 删除 next 链表 else 节点

第一种讲法就是循环的方式,因为要循环遍历这个链表,所以我们会运用到一个很重要的哨兵思想,就是定一个没啥意义的哨兵,让head “make sense”,接着,我们的任务是对链表进行删除,那就涉及到一个前端链表的指向问题,但是现在这个是单向链表,我们无法知道你前面那个是谁,所以我们也可以想办法得到前端链表,所以,我们就约定两个指针p1,p2. 当我们假如让p2扮演遍历的角色,那么它的跟屁虫p1就可以很高效地帮我们找到前端,这就是一个思想,现在就是老样子,当p2 null的时候停下来,用while一直走,然后大致思路就是,p1跟着p2走,遇到val等的时候,p1改变指向(换大哥)(

p1.next = p2.next;

),p2接着往前走,硬生生又成为它的大哥

p2=p2.next;,为什么写在if else外面呢,因为不管是否满足条件,p2都要往下走



接下来是令人头大的递归

递归怎么讲呢。。。老样子导入等于null就null,然后下面看if else,满足条件,就return listnode.next,啥意思呢,我刚开始也想得很绕,后面换个思路想,我把一串好好的链表123456,放到你这个方法里去,我放了一个1进去,你给我return出来个2,你啥意思嘞,1不就被吃了吗·1,那else那边啥意思呢,就是第一个next就是指向,加入上一个递归的if那边成立了,导致被吃了,那你next不就只能指向被吃下面的那一位吗,然后因为我没被吃,所以我return自己

标签:p2,p1,return,删除,next,链表,else,节点
From: https://www.cnblogs.com/cjtaaa/p/17799222.html

相关文章

  • 141. 环形链表
    目录题目法一、快慢指针法二、哈希表题目给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。注意:po......
  • 234.回文链表
    目录题目法一、复制+反转链表法二、堆栈法三、快慢指针和链表反转题目给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false法一、复制+反转链表把原......
  • 05数据结构(栈、队列、数组、链表)
    数据结构一、什么是数据结构计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者存储效率。如何学习数据结构:每......
  • 【java基础-实战3】list遍历时删除元素的方法
    在实际的业务开发中,容器的遍历可以说是非常非常常见的场景了,遍历删除呢,用的机会也比较多,那么有哪几种删除元素的方法呢?你用对了吗~本文循序渐进,先说几种容易出问题的方法,再引出几种比较可靠的方法~首先,初始化一个数组,用于后面的事例演示:List<Integer>list=newArrayList<>();......
  • Docker Swarm 节点维护
    DockerSwarmModeDockerSwarm集群搭建DockerSwarm节点维护DockerService创建1.角色转换Swarm集群中节点的角色只有manager与worker,所以其角色也只是在manager与worker间的转换。即worker升级为manager,或manager降级为worker。1.1worker升级为manager在manag......
  • VMware Workstation提示:另一个程序已锁定文件的一部分,进程无法访问,删除.lck文件夹和文
    一、如图二、原因因为虚拟机在运行的时候,会锁定文件,防止被修改,而如果系统突然崩溃,虚拟机就来不急把已锁定的文件解锁。当你再次启动虚拟机的时候,会提示这类错误信息。三、解决进入虚拟机文件夹,删除有关以“.lck”为后缀的文件和文件夹,即可正常启动虚拟机~~~......
  • 21. 合并两个有序链表
    目录题目代码题目将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=[0]输出:[0]代码class......
  • 面试必刷TOP101:16、删除有序链表中重复的元素-II
    一、题目二、题解importjava.util.*;publicclassSolution{publicListNodedeleteDuplicates(ListNodehead){//空链表if(head==null)returnnull;ListNoderes=newListNode(0);//在链表前加一个表头......
  • 如何在Git仓库中查找并恢复已删除的文件?
    内容来自DOChttps://q.houxu6.top/?s=如何在Git仓库中查找并恢复已删除的文件?假设我在一个Git仓库中。我删除了一个文件并提交了更改。我继续工作并进行一些更多的提交。然后,我发现在删除该文件后需要恢复它。我知道可以使用gitcheckout<commit>--filename.txt来检出一......
  • 19. 删除链表的倒数第 N 个结点(中)
    目录题目法一、循环法二、快慢指针题目给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]法一、循环classSolution:......