链表是一种物理存储结构上非连续的存储元素,数据元素的逻辑顺序是通过链表的引用链接依次实现的。
1.单链表
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210418214743148.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjQwMTkxMw==,size_16,color_FFFFFF,t_70)
单链表的结点只有一个指向,即后继指针next指向下一个结点。
2.双向链表
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210418214812211.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjQwMTkxMw==,size_16,color_FFFFFF,t_70)
双向链表的结点有两个指向,一个后继指针next指向下一个结点,还有一个前驱指针prev指向上一个结点。
单链表和双向链表的区别:
每个结点除了存储数据data外,还会会记录上一个结点和下一个结点的地址。
3.循环链表
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210418215103963.png)
循环链表的尾结点不指向空,而是指向头结点,类似一个环形结构。
由以上链表结构可以看出,链表以节点作为单位存储,不支持随机访问
任意位置增删元素时间复杂度是O(1)。