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

--- 数据结构 链表 --- java

与顺序表相比,链表的最大优点就是不会存在空间的浪费

链表是通过将一个一个储存数据的节点(对象)连起来(通过记录下他们的地址),这些数据在逻辑上就是线性的,但在物理上不是,因为地址是随机的

链表的设计,

在自己实现的链表中还有个LIstNode类,这个是用来创造节点,而mylistnode中是实现方法对listNode进行增删查改的操作

head是储存链表的头一个节点

ListNode类使用static修饰,这样你在外部类不用newmylistnode也能使用,不过其实你不写也没有问题的也能正常实现的,不过加上是一个好的习惯,下面的图是java自己实现的链表的构造方法

可以看到也是加了static 

val用来储存数据,next用来连接下一个节点

增 add 头插 尾插

会有俩种情况,一是不存在链表,也就是head为空,那么我们直接创建一个节点赋给head

二是head不为空,那么我们就要找到他的尾巴,然后创建节点插入这个尾巴

删 del

尾删,这时需要遍历找到尾节点前一个节点,见这个节点的next置为空,这样就算是删除了最后一个节点

查找 contain

遍历这个链表,使用while不会空那么就走到下一个节点 tmp = tmp.next,并在走之前判断这个值是否存在

改 set

和查找一样,先找到这个节点,然后更改这个节点的值,然后退出返回true证明更改成功

这样增删查改就完成了,但这个仅仅只是开始,还可实现指定位置的插入,指定值的删除,删除所有链表中存在的指定值,查找该值并返回该节点等等

end fight!!~~


http://www.kler.cn/a/291447.html

相关文章:

  • Vscode 远程切换Python虚拟环境
  • 【支持向量机(SVM)】:相关概念及API使用
  • 【leetcode 02】27. 移除元素
  • HarmonyOs鸿蒙开发实战(9)=>解析json数据,自动生成实体Bean插件-jsonFormat使用教程(铁粉福利)
  • C# 异常处理、多个异常、自定义异常处理
  • Lambda常用方法
  • pytorch pyro更高阶的优化器会使用更高阶的导数,比如二阶导数(Hessian矩阵)
  • Verilog基础,原码,反码与补码的概念
  • 【面试八股总结】MySQL 锁:全局锁、表级锁、行级锁
  • 国产游戏行业的崛起:技术挑战与未来机遇
  • Java | Leetcode Java题解之第393题UTF-8编码验证
  • 传递给 LEFT 或 SUBSTRING 函数的长度参数无效
  • 输送线相机拍照信号触发(博途PLC高速计数器中断立即输出应用)
  • k8s - Volume 简介和HostPath的使用
  • 光电红外传感器详解(STM32)
  • web群集--nginx常见的几种负载均衡调度算法的配置过程和效果展示
  • ~/.bashrc、 ~/.bash_profile、~/.profile、 /etc/profile几个配置文件的区别
  • 亚马逊卖家测评为什么要自己养账号呢?不懂快进来看看
  • 计算机二级真题--程序设计大题 章节
  • 【多线程】方法中定义的局部变量是否为线程安全的?
  • 适用于 Visual Studio 的 C++ 万能头
  • Hadoop运行jps没有datanode节点【已解决】
  • 常用的限流算法-令牌桶(Token Bucket)php版
  • Python将Latex公式插入到Word中
  • leetcode回文链表
  • 【动态规划-背包问题】