链式存储结构之LinkedList源码分析
链式存储结构是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
- 为了表示每个数据元素a(i)和其直接后继数据元素a(i+1)之间的逻辑关系,对数据元素a(i)来说,除了存储其本身的信息外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。
- 我们把存储数据元素信息的域称为数据域,把存储直接后继位的域称为指针域。
- 指针域中存储的信息称做指针或链。这两部分信息组成数据元素a(i)的存储映像,称为结点。
- 链表中第一个结点的存储位置叫做头指针。
- 链表的最后一个结点指针为”空”(通常用NULL或
^符号表示)
1. 链式存储结构的优缺点
优:删除和插入效率高
缺:查询效率低
2. 链表的分类
- 单链表
n个结点链成一个链表,此链表的每个结点中只包含一个指针域
静态链表:静态链表其实是为了给没有指针的高级语言设计的一种实现单链表能力的方法。
- 循环链表
将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成了一个环,这种首尾相接单单链表称为单循环链表,简称循环链表
- 双向循环链表
双向链表是在单向循环链表的每个结点中,再设置一个指向其前驱结点的指针域。
在Java中,我们常见具有代表性的链式存储结构有很多,这里我们以LinkedList为例,进行分析,看看它内部是如何实现链式存储结构的。



