线性表的链式存储结构
1 . 线性链表的概念:
线性表的链式存储结构即线性链表
线性链表中的每一个元素有两部分组成 (数据域和指针域), 数据域存放数值本身, 指针域 用来存放与当前数值有关的另一个元素的地址
2. 单向链表
对于单向链表而言,链表中的每一个元素都要保存一个指向下一个元素的指针
单向链表图示:

单向链表插入元素.

3. 双向链表
对于双向链表而言,链表中的每个元素既要保存指向下一个元素的指针,又要保存指向上一个元素的指针

4. 循环链表
循环链表中增加了一个表头节点
循环链表中最后一个节点的指针域不是空的,而是指向表头接节点

普通的线性表不能访问链表中的任意元素, 而循环链表能.
4. 链表的特点
<1>线性链表的存储空间可以不连续, 数据逻辑顺序也可以不一致
<2>链表可以快速插入和删除元素, 而不用移动其他元素. (插入,删除元素的时间复杂度为O(1))
(在链表中进行插入和删除节点真的很容易。与数组不同,我们不必在插入或删除元素后移位元素。在链表中,我们只需要更新节点下一个指针中的地址。)
<3>链表大小不固定,可以随时扩展. 内存利用率高
(由于链表的大小可以在运行时增加或减少,因此没有内存浪费。在数组的情况下,存在大量的内存浪费,就像我们声明一个大小为10的数组并且只存储6个元素,那么浪费了4个元素的空间。链表中没有这样的问题,因为只在需要时才分配内存。)
<4>链表查找元素效率低 (定位元素的时间复杂度O(n))
(链表中的元素或节点遍历很困难,访问元素的效率低。我们不能像索引一样随机访问任何元素。例如,如果我们想要访问位置n的节点,那么我们必须遍历它之前的所有节点。因此,访问节点所需的时间很长。)
<5>链表不支持随机查找元素

浙公网安备 33010602011771号