线性表

2021/5/1

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

# 特性

相同特性:所有元素属于同一数据类型。

有限:数据元素个数是有限的。

序列:数据元素由逻辑序号唯一确定。一个线性表中可以有相同值的 元素。

# 线性表的长度

线性表中所含元素的个数叫做线性表的长度,用n表示,n≥0。 n=0时,表示线性表是一个空表,即表中不包含任何元素。

# 线性表的逻辑表示

![image-20210602180407310](https://gitee.com/koala010/typora/raw/master/img/ 线性表的逻辑表示.png)

线性表的知识结构

image-20210602180453524

# 重点

线性表两类存储结构的差异

每种存储结构中基本运算的实现算法

利用线性表求解实际问题

利用有序表特性设计高效算法

# 顺序存储结构

# 定义

把线性表中的所有元素按照顺序存储方法进行存储。

按逻辑顺序依次存储到存储器中一篇连续的存储空间中。

# 相关算法

已知长度为n的线性表A采用顺序存储结构。设计 一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除 线性表中所有值为x的数据元素

# 以下两种方法都不满足要求

如果每删除一个值为x的元素都进行移动,其时间复杂度为O(n2), 空间复杂度为O(1)。

如果借助一个新的顺序表,存放将A中所有不为x的元素,其时间复 杂度为O(n),空间复杂度为O(n)。

# 解法一

设删除A中所有值等于x元素后的顺序表为A1,显 然A1包含在A中,为此A1重用A的空间

思路:扫描顺序表A,重建A只包含不等于x的元素。

# 解法二

用k记录顺序表A中等于x的元素个数,一边扫描A一 边统计k值。

思路:将不为x的元素前移k个位置,最后修改A的长度

# 链式存储结构

# 特点

  • 线性表中每个节点有唯一的前趋节点和前趋节点
  • 设计链式存储结构时,每个逻辑节点存储单独存储,为了表 示逻辑关系,增加指针域
    • 每个物理节点增加一个指向后继节点的指针域  单链表
    • 每个物理节点增加一个指向后继节点的指针域和一个指向前趋节 点的指针域 双链表
  • 单链表增加一个头节点的优点
    • 第一个节点的操作和表中其他节点的操作相一致,无需进行特殊处理
    • 无论链表是否为空,都有一个头节点,因此空表和非空表的处理 也就统一了

# 存储密度

image-20210602181023035

# 单链表

# 特点

当访问过一个节点后,只能接着访问它的后继节点,而无法 访问它的前趋节点

# 插入节点

插入操作:将值为x的新节点*s插入到*p节点之后

特点:只需修改相关节点的指针域,不需要移动节点

![image-20210602181130816](https://gitee.com/koala010/typora/raw/master/img/ 单链表插入节点.png)

# 删除节点

删除操作:删除*p节点之后的一个节点

特点:只需修改相关节点的指针域,不需要移动节点

image-20210602181227570

# 头插法

image-20210602181344579

从一个空表开始,创建一个头节点。 依次读取字符数组a中的元素,生成新节点 将新节点插入到当前链表的表头上,直到结束为止

# 尾插法

image-20210602181413680

从一个空表开始,创建一个头节点。 依次读取字符数组a中的元素,生成新节点 将新节点插入到当前链表的表尾上,直到结束为止

# 双链表

在线性表的链式存储结构中,每个物理节点增加一个指向 后继节点的指针域和一个指向前趋节点的指针域 双链表

image-20210602181502612

# 优点

  • 从任一节点出发可以快速找到其前趋节点和后继节点

  • 从任一节点出发可以访问其他节点

# 插入节点

image-20210602181557527

# 删除节点

image-20210602181620435

# 循环链表

# 循环单链表

将表中尾节点的指针域改为指向表头节点,整个链表形成一个环。由此从表中任一节点出发均可找到链表中其他节点

# 示意图

image-20210602181722157

# 对比非循环单链表

image-20210602181750058

# 循环双链表

# 定义

形成两个环

image-20210602181956492

# 示意图

image-20210602182136738

# 对比非循环双链表

image-20210602182033836

# 有序表

所有元素以递增或递 减方式有序排列

# 结构

image-20210602182311786