# 链表

尽管数组在元素的访问上很方便，但是在数组的起点和中间插入或移除元素的成本却很高，因为数组是一块连续的内存空间存储的，插入一个节点要改变插入点及后面所有元素的位置。当数组元素足够多的时候，插入一个元素的成本就会显现出来。

相对于传统的数组，链表的一个好处在于，添加或移除元素的时候不需要移动其他元素。链表同样是储存有序的元素的集合，但链表中元素在内存的位置并非连续放置的，而是有一个指针指向相邻的下一个元素。所以链表虽然插入移除节点很快，但是查询节点却很慢，因为要从头到尾遍历查询。而数组则是查询节点很快，但插入移除节点较慢。

## 分类

1. 单链表
2. 双链表
3. 循环单链表

![](https://3490195898-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LnQxDcxCKODvYvTUWe3%2F-Lxe2RP-RcgnvrO6n6FB%2F-Lxe3llfUd_575t3WFio%2Fimage.png?alt=media\&token=b33fc304-a272-47cb-92b5-e44017b5c4ec)
