【数据结构】链表的概念以及分类

在上一篇文章中,写到了顺序表。我们知道顺序表和链表都属于线性表。既然都是存储数据,干啊费那么大劲整这么多,所以它们俩肯定有各自的优点和缺点。

优点

缺点

顺序表

1.支持随机访问

1.增容时成倍增长,有空间浪费

2.中间或者头部插入数据时效率不高 O(N)

链表

1.用多少开多少,直接链上去,没有空间浪费

2.头尾插入效率高 O(1)

1.不支持随机访问

链表的概念

链表是一种物理存储结构非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。如下图所示,在数据结构中,a1里面的指针存储着a2的地址,这样一个链接一个,就形成了链表。


链表的种类 

 在实际中,链表有许多形式,不止是上图中简简单单的样子。以下情况组合起来就有八种形式的链表:

下面介绍一下它们各自的结构,通过图可以理解得更深刻

不带头单链表

  1. 单向、双向
  2. 带头、不带头
  3. 循环、非循环

不带头双向链表 

 带头单链表

循环单链表

带头双向循环链表

虽然有很多的链表结构,但其实,我们最常用的就是两种结构:

  • 无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。
  • 带头双向循环链表:结构最复杂,一股用在单独存储数据。 实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。

猜你喜欢

转载自blog.csdn.net/Miss_Monster/article/details/83657467
今日推荐