(二)数据结构线性表相关知识

数据结构

二、线性表

线性表考点:
(二)数据结构线性表相关知识_第1张图片

2.1线性表的逻辑结构

线性表是具有相同特性数据元素的有限序列

2.2线性表的存储结构

第一个元素没有直接前驱元素,最后一个元素没有直接后继元素,其他元素都有唯一的前驱和后继元素。线性表有顺序存储结构链式存储结构

2.2.1顺序存储结构

是指将线性表中的各个元素依次存放在一组地址连续的存储单元中,通常将这种方法存储的线性表称为顺序表。
顺序存储结构的优缺点:

  • 优点:无须关心表中元素之间的关系,所以不用增加额外的存储空间;可以快速地取表中任意位置的元素。
  • 缺点:插入和删除操作需要移动大量元素。使用前需事先分配好内存空间,当线性表长度变化较大时,难以确定存储空间的容量。分配空间过大会造成存储空间的巨大浪费,分配的空间过小,难以适应问题的需求。
2.2.2链式存储结构

一、单链表:
(二)数据结构线性表相关知识_第2张图片
上图第一个为含有头结点的单链表,第二个为不含头结点的单链表。

  • 头结点不含任何信息,它后边就是存储第一个数据信息的结点即开始结点,链表最后一个存储数据信息的结点即尾结点
  • 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    不管哪一种链表,只要不含数据结点,它就是空链表。
    1.对于含有头结点的单链表:头结点的next指针为空的话,它就是空链表,即
    (二)数据结构线性表相关知识_第3张图片
    2.对于不含头结点的单链表:头结点为空的话,它就是空链表,即
    在这里插入图片描述

二、双链表:

(二)数据结构线性表相关知识_第4张图片

  • 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    与单链表一样。

三、循环链表:
(二)数据结构线性表相关知识_第5张图片
上图第一个为含头结点的单循环链表,第二个为含头结点的双循环链表。

  • 判断链表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
    1.对于含有头结点的链表
    1>.单循环链表:当头结点的指针指向它本身时为空。
    2>.双循环链表:当头结点的两个指针都指向它本身时为空。
  • 单循环链表和双循环链表不管什么时候都不会有空指针。
    2.对于不含头结点的链表
    Head指针为空时。
    (二)数据结构线性表相关知识_第6张图片

2.3顺序表与链表特性对比

  • 在顺序表中插入和删除元素可能会导致移动大量元素的连带操作(插入或删除操作发生在表尾位置例外),而链表不会。

  • 存储方式:线性表采用顺序存储结构,必须占用一片连续的存储单元;而采用链式存储结构则不需要这样。(顺序表用一组连续的存储单元依次存储线性表的数据元素;而单链表用一组任意的存储单元存放线性表的数据元素。)

  • 从表整体来看,一般顺序表存储空间利用率低于链表;而从单个存储单元来看,顺序表存储空间利用率要高于链表。

  • 补充1:时间性能:采用顺序存储结构时查找的时间复杂度为O(1)(因为只需一个下标即可瞬间定位),插入和删除需要移动平均一半的数据元素,时间复杂度为O(n)(需要一个搜索的过程)。采用单链表存储结构的查找时间复杂度为O(n),插入和删除不需要移动元素,时间复杂度仅为O(1)。

  • 补充2:空间性能:采用顺序存储结构时需要预先分配存储空间,分配空间过大会造成浪费,过小会造成问题。采用单链表存储结构时,可根据需要进行临时分配,不需要估计问题的规模大小,只要内存够就可以分配,还可以用于一些特殊情况,如一元多项的表示。
    (二)数据结构线性表相关知识_第7张图片

2.4元素移动次数计算和静态链表

2.4.1移动次数计算
  • 两种问题:在某个位置插入一个新元素会导致多少元素移动;在每个位置插入一个元素导致的平均移动次数。

  • 一个顺序表有n个元素,则其可插入位置有n+1个,因为后边多了一个位置。
    (二)数据结构线性表相关知识_第8张图片

  • 每个位置插入一个元素的平均移动次数:先计算出在每个位置可能进行插入的概率1/(n+1),然后乘某个位置上进行插入操作所导致的移动次数。

(二)数据结构线性表相关知识_第9张图片

(二)数据结构线性表相关知识_第10张图片

  • 注意:可删除位置是n,有几个元素就业几个删除位置;不同于插入时的n+1个。
2.4.2静态链表
  • 对于某种存储结构,其存储空间如果是一次性分配,之后不再变了就叫静态分配(顺序表),如果是多次性分配就叫动态分配(链表)。

  • 静态链表:存储空间是静态分配的,即我们给它分配了一个顺序表,只不过我们在这一片顺序链表上通过一些方法实现了类似链表的存储方法。
    (二)数据结构线性表相关知识_第11张图片

你可能感兴趣的:(数据结构)