一、什么是链表
线性表结构,每个存储节点除了有数据外还有指针,通过指针将零散的内存块串联,无需连续的内存空间。
二、链表的主要类型
2.1 单链表
node 由 data + next 指针(后继指针)组成。尾节点(最后一个节点)的 next 指针为 null。
2.2 双向聊表
node 由 data,next 指针(后继指针),previous(前驱指针)组成。头结点(第一个节点)的 previous 指针为null,尾节点(最后一个节点)的 next 指针为 null。
2.3 循环链表
与单向链表的区别在于,尾节点(最后一个节点)的 next 指针不为 null,而是指向头结点。
2.4 双向循环链表
与双向链表的区别在于,头结点(第一个节点)的 previous 指针不为null,而是指向尾节点,尾节点(最后一个节点)的 next 指针不为 null,而是指向头结点。
三、链表的特点(与Array对比)
无需连续的存储空间。
按下标随机访问的时间复杂度 O(n)。
插入、删除的时间复杂度O(1)(这个是在已知节点的前驱和后继的前提下)。