首页 > 编程语言 >JAVA--LinkedList底层双链表添加元素超详细

JAVA--LinkedList底层双链表添加元素超详细

时间:2022-10-23 22:26:36浏览次数:51  
标签:结点 JAVA LinkedList 指向 -- next 对象 添加 指针

 集合里面存储的都是对象

 

 

 

 

添加第一个元素

 

 

 

 添加第二个元素

 

 

 

 依次往后添加对象/元素。

 

 

 first指向linkedList集合里存储的第一个结点对象,last则指向最后一个结点对象,里面如果有一个就同时指向

pre指向上一个结点对象,next指向下一个结点对象,node结点(pre,e,next),里面的e或者item是真正存储对象的地方

 创建一个LinkedList linkedList = new LinkedList();创建一个实例化集合,此时这个集合里面为空,它的头指针first,和尾指针last都指向null(空),linkList.add("a");

添加一个对象,通过add()方法里面的lastList()方法添加这个对象,进入后现先把尾指针last赋给l,然后创建一个newNode结点对象,

把l赋值给这个这个结点对象的pre,把需要存储的对象存放在这个结点对象的e里面,next再创这个结点对象时里面的方法已经置为null。然后把尾指针last指向新创建的结点对象,

然后判断l是否为空,如果为空,就把头指针指向这个结点,此时l为空所以不走else,此时第一个对象添加完成,添加第二对象时,由于头指针first和尾指针last都指向了

第一个结点对象,在添加第二个对象时,依旧通过add()方法里面的lastList()方法添加这个对象,进入后现先把尾指针last赋给l,所以此时l就指向上一个结点对象(也就是第一个结点对象),

然后创建一个新的结点对象newNode(也就是第二个结点对象),然后将l付给了第二个结点对象的pre,也就说这个时候这个对象的pre就指向了上一个结点对象,

然后把存储的对象存放在这个结点对象的e里面,next依旧为空,然后把尾指针指向这个新创建的节点对象,然后判断l是否为空,此时不为空,所以l.next = newNode;,因为前面l是指向上一个结点,

所以l.next就是上一个结点对象指向下一个节点对象,也就指向了刚才新创建的节点对象(此时为第二个节点对象),所以这个时候双向链表也就构成了。如果往后加对象/元素同时。

 

标签:结点,JAVA,LinkedList,指向,--,next,对象,添加,指针
From: https://www.cnblogs.com/wang1999an/p/16819440.html

相关文章

  • 链表
    #插入定义列表a=[a1,a2......ai-1,ai+1......an-1,an]ai-1-->节点p,ai+1-->节点q(此时p->next=q)设插入元素ai为节点xx->next=p->nextp->next=x#删除定义列表a=[a₁,......
  • FXGL游戏开发-物理现象
    在实现生活中物理现象是客观存在的,FXGL游戏框架也提供了相应的组件,那就是PhysicsComponent。利用PhysicsComponent可以实现现实世界中的物理现象,比如:自由落体,看看使......
  • redis采用fastjson序列化方式
    packagecom.wangbiao.security.config;importcom.alibaba.fastjson.support.spring.FastJsonRedisSerializer;importorg.springframework.context.annotation.Bean;......
  • 链表结构
    链表分为两种:单向链表和双向链表。 其中单向链表每个节点只有两个元素。 而双向链表的每个节点有三个元素。 还有,在代码开发的过程中,如果要解剖分析源码,那么,win......
  • Jenkins+allure+pytest 完整下载安装配置小白教程(自动化持续集成)
     具体学习视频可以参考:https://www.bilibili.com/video/BV1Bf4y1L7su/?spm_id_from=333.337.search-card.all.click&vd_source=59b7787316220625d1c23b055c444107  ......
  • Stanford_CS224W----Expressive Graph Neural Networks
    ExpressiveGraphNeuralNetworks寄鸽了一周没有写课程笔记,这次课程讲的是选择一个expressive的GNNmodel(当然还是要依据实际情况选择模型)从一个简单的栗子开始理解叭......
  • BFC
    Box:CSS布局的基本单位FormattingcontextBFC定义哪些属性产生BFCBFC布局特性特性1:BFC针对display为block的块级元素,所以是垂直排列的BOX。特性2:处于同一个BFC中的......
  • 链表
    链表删除节点a,a+1....ai-1,ai,ai+1,....使ai-1的节点为p,使ai的节点为t,ai+1的节点为q使p(next-->ai+1)清除t节点的next完成删除节点t插入节点a,a+1....ai-1,ai+1,.........
  • JSTL C标签怎么判断参数是否为空
    有时候我们在使用JSTLC标签<c:if>语句的时候,想判断参数是否为空,怎么判断呢,下面来分享一下方法工具/原料JSTLC标签JSTLC标签判断参数是否为空方法方法/步骤第......
  • 学生公寓管理系统
    数据库名:学生公寓公寓楼:表B楼号BNO楼名BN所属宿管编号DMN楼的位置BDR宿舍楼:表D宿舍号DNO楼号BNO楼层号FLN已住人数YZ可住人数KZ宿管编号DMN......