02 - 线性表

数据结构和算法学习汇总

主要掌握线性表的存储结构,包括顺序存储结构和链式存储结构,他们二者的区别

介绍

线性表在逻辑上属于线性结构,是具有相同特性的数据元素的一个有限序列,数据元素之间带有有序性,基本上是有两种存储结构,顺序存储结构和链式存储结构。

顺序存储结构

介绍

  • 把线性表中的所有元素按照其逻辑顺序依次存储到从计算机存储器中指定存储位置开始的一块连续的存储空间中
  • 这样在逻辑上相邻的两个元素在存储位置上也相邻,被称为直接映射

注意点:

  • 优点是节省存储空间,便于查询,缺点不便于增删
  • 顺序表必须占用一整块事先分配的固定的存储空间,不便于存储空间的管理

链式存储结构

介绍:
链式存储结构可以对存储空间动态管理的存储结构,该结构不要求相邻的节点在物理上也相邻,其节点间的逻辑关系是由附加的指针字段来表示的。

组成:
每个存储节点既包含元素本身的信息,也包含了元素之间逻辑关系的信息。
逻辑关系信息也就是后继节点或前驱结点的地址信息,称为地址域

分类:

  • 单链表:每个节点除了数据信息,只有一个后继节点,称为线性单向链表


    单向链表.png
  • 双链表:每个节点除了数据信息,还有一个后继节点一个前驱节点,称为线性双向链表


    双向链表.png
  • 循环链表:特点是表中尾节点的指针域不再为空,而是指向头节点。整个链表形成一个环


    循环链表.png

运算:

查找方式:为了便于插入和删除算法的实现,每个链表带有一个头节点,为了便于插入和删除算法的实现,每个链表带有一个头节点。

增删:可以通过修改相关节点的指针域,来对链表进行插入或删除的操作,方便省时

存储密度:

  • 指节点数据本身所占的存储量和整个节点结构中所占的存储量之比
  • 存储密度越大,存储空间的利用率就越高

注意点:

  • 因为数据的存储单元会有一部分用来存储节点之间的逻辑关系,所以浪费内存。
  • 存储密度小,存储空间的利用率低
  • 便于增删,但是不便于查询

区别

  • 顺序存储结构节省空间,链式存储结构需要存储逻辑关系信息,所以会浪费一定空间
  • 顺序存储结构通过物理位置位移,使得查询更方便,而链式存储结构的查询需要通过表头开始顺序查找所有的节点,不便于查询
  • 顺序存储结构增删数据会移动其他数据,增删慢,而链式存储结构的增删数据只需要更改相邻的节点即可,增删快
  • 核心区别在于顺序存储结构通过物理关系实现逻辑关系,而链式存储结构逻辑关系与物理存储无关

你可能感兴趣的:(02 - 线性表)