基础数据结构-链表

一、什么是链表

线性表结构,每个存储节点除了有数据外还有指针,通过指针将零散的内存块串联,无需连续的内存空间。

二、链表的主要类型

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对比)

  1. 无需连续的存储空间。

  2. 按下标随机访问的时间复杂度 O(n)。

  3. 插入、删除的时间复杂度O(1)(这个是在已知节点的前驱和后继的前提下)。