2.1线性表
简称表,是零个或多个元素的有穷序列
表目:表中的元素
索引(下标):i称为ki的下标
表的长度:所含元素个数n
空表:长度为0(n=0)
特点:操作灵活,其长度可以增长、缩短
适用于小规模数据
线性结构
- 为前驱/后继关系,有反对称性和传递性
- 有一个唯一的开始节点,没有前驱,有一个唯一的直接后继
- 有一个唯一的终止节点,有一个唯一的直接前驱,没有后继
- 其它节点皆称为内部节点,每一个内部节点都有一个唯一的直接前驱,也有一个唯一的直接后继
- <ai,ai+1>ai是ai+1的前驱,ai+1是ai的后继
特点:
- 均匀性:元素必定具有相同的数据类型和长度
- 有序性:各元素之间的相对位置是线性的
按复杂程度划分
- 简单的:线性表、栈、队列、散列表
- 高级的:广义表、多维数组、文件......
按访问方式划分
- 直接访问型(Direct Access):根据下标访问(数组)
- 顺序访问型(Sequential Access):顺序查找(链表)
- 目录索引型(Directory Access):有效索引(字典,散链)
按操作划分
线性表
- 所有表目都是同一类型节点的线性表
- 不限操作形式
- 根据存储的不同分为:顺序表,链表
栈(LIFO,Last In First Out)
- 插入和删除操作都限制在表的同一端进行
队列(FIFO,First In First Out)
- 插入操作在表的一段,删除操作在另一端
线性表逻辑结构
主要属性包括:
- 线性表的长度
- 表头,表尾
- 当前位置
顺序表,链表(不同存储)
顺序表
- 按索引值从小到大存放在一片相邻的连续区域
- 紧凑结构,存储密度为1
- 物理关系即为逻辑关系,不需要额外空间
链表
- 单链表(需要指针,额外开销)
- 双链表
- 循环链表
栈,队列(不同操作)
栈:插入和删除都限制在表的同一端进行
应用于深度搜索
队列:插入操作在表的一段,删除操作在另一端
应用于广度优先搜索
线性表的运算
- 建立,清除线性表
- 插入,删除,修改元素
- 排序,检索