线性表
大纲:
- 线性表的基本概念和类型定义
- 线性表的顺序存储结构
- 线性表的链接存储结构
定义
- 线性表是具有相同特性数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度。长度用n(n>0)表示
逻辑特性
- 只有一个表头元素。
- 只有一个表尾元素。
- 除表头和表尾元素外,其他元素都只有一个直接前驱,也只有一个直接后继。
存储结构
** 1. 顺序表 **
- 把线性表中的所有元素按照其逻辑顺序,一次存储到从指定的存储位置开始的一段连续的存储空间中。
- 顺序表具有随机访问特性
- 顺序表占用连续的存储空间
- 顺序表做插入操作要移动多个元素
** 2. 链表 **
- 链表存储中,每个结点不仅包含所存元素的信息,还包含元素之间逻辑关系的信息。
- 链表不支持随机访问
- 链表结点存储空间利用率比顺序表稍低
- 链表支持动态分配
- 链表进行插曲操作无须移动元素
- 链表有以下五种形式
1)单链表 - 带头结点的单链表
- 不带头结点的单链表
2)双链表 - 比单链表多了个指向前驱的指针域
3)循环单链表 - 最后一个指针域指向第一个结点
4)循环双链表
-同单链表
5)静态链表 - 借助一维数组表示,结点空间来自结构体数组。有两个分量,一个是数据元素分量data,另一个是指针分量,记录了直接后继结点的数组下标,相当于链表中的next指针。
顺序表和链表的比较
** 1. 空间 **
- 顺序表一次性分配存储空间,链表多次分配
** 2. 存储密度** - 顺序表=1,链表<1(结点中有指针域)
** 3. 时间**
1)存取方式 - 顺序表可以随机存取,也可以顺序存取
链表只能顺序存取
2)插入/删除时移动元素的个数 - 顺序表平均移动一半,链表不移动,只修改指针
3)顺序表插入和删除时间复杂度分析
具有n个元素的顺序表,插入一个元素平均移动多少个元素(假设新元素仅插入到每个元素之后)
①求概率
有n个可插入位置,所以每个位置被插入的概率** p=1/n**
②每个插入位置需要移动的元素的个数
n-i
求出数学期望。