链表
链表是由一系列节点(链表中的每一个元素都叫作一个节点)组成的数据结构,节点可以在运行过程中动态生成。每个节点都包括两部分内容:存储数据的数据域;存储下一个节点地址的指针域。由于链表是随机存储数据的,因此在链表中插入数据的时间复杂度为O(1),比在线性表和顺序表中插入的效率要高;但在链表中查找一个节点时需要遍历链表中所有元素,因此时间复杂度为O( ),而在线性表和顺序表中查找一个节点的时间复杂度分别为0 (log n)和 O(1)。
链表有 3种不同的类型:单向链表、双向链表及循环链表。
链表的特点
链表通过一组存储单元存储线性表中的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,为了表示每个数据元素与其直接后继数据元素之间的逻辑关系,对数据元素来说,除了存储其本身的信息,还需要存储直接后继数据元素的信息(即直接后继数据元素的存储位置)。由这两部分信息组成一个“节点”。链表数据结构的优点是插入快,缺点是数据查询需要遍历整个链表,效率慢。
单向链表的操作及其Java实现
单向链表(又称单链表)是链表的一种,其特点是链表的链接方向是单向的,访问链表时要从头部开始顺序读取。单向链表是链表中结构最简单的。一个单向链表的节点(Node)可分为两部分:第1部分为数据区(data),用于保存节点的数据信息;第2部分为指针区,用于存储下一个节点的地址,最后一个节点的指针指向null。
- 单向链表的操作
(1)查找:单向链表只可向一个方向遍历,一般在查找一个节点时需要从单向链表的第1个节点开始依次访问下一个节点,一直访问到需要的位置。
(2)插入:对于单向链表的插入,只需将当前插入的节点设置为头节点,将Next指针指向原来的头节点即可。插入后的结果。
(3)删除:对于单向链表的删除,我们只需将该节点的上一个节点的Next指针指向该节点的下一个节点,然后删除该节点即可。
- 链表的Java实现



