线性表的链式存储结构

1 . 线性链表的概念:

  线性表的链式存储结构即线性链表

  线性链表中的每一个元素有两部分组成 (数据域和指针域), 数据域存放数值本身, 指针域 用来存放与当前数值有关的另一个元素的地址

2. 单向链表

  对于单向链表而言,链表中的每一个元素都要保存一个指向下一个元素的指针

  单向链表图示:

  

  单向链表插入元素.

  

 

 

 

3. 双向链表

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

 

 

4. 循环链表

  循环链表中增加了一个表头节点

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

  

 

   普通的线性表不能访问链表中的任意元素, 而循环链表能.

 

4. 链表的特点

  <1>线性链表的存储空间可以不连续,  数据逻辑顺序也可以不一致

  <2>链表可以快速插入和删除元素, 而不用移动其他元素. (插入,删除元素的时间复杂度为O(1))

  (在链表中进行插入和删除节点真的很容易。与数组不同,我们不必在插入或删除元素后移位元素。在链表中,我们只需要更新节点下一个指针中的地址。)

  <3>链表大小不固定,可以随时扩展. 内存利用率高

   (由于链表的大小可以在运行时增加或减少,因此没有内存浪费。在数组的情况下,存在大量的内存浪费,就像我们声明一个大小为10的数组并且只存储6个元素,那么浪费了4个元素的空间。链表中没有这样的问题,因为只在需要时才分配内存。)

  <4>链表查找元素效率低  (定位元素的时间复杂度O(n))

  (链表中的元素或节点遍历很困难,访问元素的效率低。我们不能像索引一样随机访问任何元素。例如,如果我们想要访问位置n的节点,那么我们必须遍历它之前的所有节点。因此,访问节点所需的时间很长。)

  <5>链表不支持随机查找元素

posted @ 2022-05-14 22:52  Avicii_2018  阅读(277)  评论(0)    收藏  举报