当前位置: 首页 > news >正文

LinkedList添加和删除方法的源码分析超详细

我们基于下面这段代码进行分析

进入add方法后调用的是linkLast方法

 

这是add方法真正的底层逻辑,首先将last值赋给l节点,此时的l为null,然后再创建新节点的时候将l作为前向指针传入,将节点中的next指针也赋值为null,之后让last节点指向新节点。然后进行if判断如果l为null就将first也指向新节点。这是第一次添加的过程

下面我们看第二次添加的过程 ,最终还是执行linkLast方法,只不过此时的last指向第一个节点,所以l也指向第一个节点,然后创建一个新节点将l传入,所以新节点中的prev指向第一个节点,接着将last的指向改为新节点。由于此时的l不为null,所以进入else,将首节点中的next执向新节点接着我们看一下它的remove方法,默认删除的首元素

首先将first的引用保存起来,真正执行删除方法的是unlinkFirst().

 首先将节点中的值和next指针保存起来,接着将他们置为null,通过GC,然后将头节点的指向改为next,此时的next不为null进入else,然后将next的prev置为null,这样头节点就和下一个节点断开了联系

 

相关文章:

  • JS生成随机数
  • 多通道协议-FTP详解
  • matlab峰值检测
  • 【非常困难】 猿人学web第一届 第10题 js 混淆 - 重放攻击对抗
  • odoo17 footer 异常备忘
  • Python+PyCharm安装和配置(详细步骤)
  • Flutter ListView 实现不同样式 item
  • 【HTML】模拟插头连接断开动画
  • 复杂的编辑表格
  • Oracle SQL - 合并重叠的期间
  • 如何选择最佳路线?
  • sql盲注python脚本学习 (基于bWAPP靶场)
  • 谈谈hash算法
  • Leetcode-day31-01背包问题
  • 《Programming from the Ground Up》阅读笔记:p103-p116
  • Angular Elements 及其运作原理
  • input的行数自动增减
  • IP路由与转发
  • leetcode98. Validate Binary Search Tree
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Python_OOP
  • quasar-framework cnodejs社区
  • React as a UI Runtime(五、列表)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue数据传递--我有特殊的实现技巧
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聊一聊前端的监控
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何编写一个可升级的智能合约
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何在GitHub上创建个人博客
  • 通过npm或yarn自动生成vue组件
  • 我的业余项目总结
  • 正则学习笔记
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • k8s使用glusterfs实现动态持久化存储
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #职场发展#其他
  • $$$$GB2312-80区位编码表$$$$
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)球球大作战
  • (TOJ2804)Even? Odd?
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二) 初入MySQL 【数据库管理】
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)Linux——Linux常用指令
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (九)c52学习之旅-定时器
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (译) 函数式 JS #1:简介
  • (转载)跟我一起学习VIM - The Life Changing Editor