从零开始学Java系列教程(一):数据结构(LinkedList类)

链式存储结构

1、单链表
     节点构成:由两部分组成,其中一部分用于存储节点中的数据(data),另外一部分用于存储指向下一个节点的地址值(next)。

    
     重要特点:只能从一个方向遍历单链表,因此也称之为“单向链表”。
     注意事项:单链表的尾结点的next存储的为null

2、双链表
     节点构造:由三部分组成,data用于存储节点中的数据,prev用于存储指向上一个节点的地址值,next用于存储指向下一个节点的地址值。

    
     重要特点:既可以从前往后遍历链表,还可以从后往前遍历链表,因此也称之为“双向链表”。
     注意事项:双链表的首节点的prev存储的为null,并且双链表的尾结点的next存储的为null

通过序号来插入节点,时间主要浪费在找正确的插入位置上,故时间复杂度为O(n)。但是,单论插入的操作,也就是无需考虑定位到插入节点的位置,那么插入操作的时间复杂度就是O(1)。
 


LinkedList类底层用双向链表实现的存储,也就意味着LinkedList类采用的是链式存储结构。在双链表中,每个节点中都有两个指针,分别指向直接前驱节点(保存前一个节点的地址值)和直接后继节点(保存后一个节点的地址值)。

LinkedList集合的特点为:查询效率低,增删效率高,线程不安全。

源码中Node类中包含了item、next和prev三个成员变量,其中item保存了节点中的内容,next和prev分别指向了后一个节点和前一个节点,则意味着Node类就是双向链表的节点类。

 

源码中first属性保存的就是双链表的首节点last属性保存的就是双链表的尾结点,而size属性保存了双链表实际存放元素的个数。因此,对LinkedList的操作,其实就是对双链表的操作。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值