文章目录
- 线性表、顺序表
- 线性表概念
- 线性结构特点
- 线性表概念
- 两种分类
- 顺序表代码
- 遍历
- 查找
- 插入
- 删除
- 逆置
- 链表(用指针实现变长的先行存储结构)
- 特点
- 习题
线性表、顺序表
线性表概念
线性结构特点
- 存在唯一一个被称为“第一个”的数据元素
- 存在唯一一个被称为“最后一个”的数据元素
- 除“第一个”元素无前驱外,集合中每个元素均有且只有一个“直接”前驱;除“最后一个”元素无后继外,集合中每个数据元素均有且只有一个“直接”后继
线性表概念
- 线性表:是具有相同数据类型的n(n>=0)个数据元素的有限序列,通常记为:
- 前驱,后继,表长,空表,首结点,尾结点
- 位序:ai(0<=i<=n-1)是线性表中元素,则称i为数据元素ai在线性表中的位序(位置)
两种分类
- 顺序表(用一维数组实现定长的线性存储结构 )
按索引值从小到大存放在一片相邻的连续区域,紧凑结构,存储密度为1
顺序表需要一块连续的存储空间,可以用一个数组实现。保存一个动态数组,需要三个变量:
data:指向线性表元素类型的指针
curlength:数组中元素个数(表长)
maxSize:数组规模(容量)
顺序表代码
遍历
查找
插入
考虑情况:
1.位置
2插入情况
最好情况:i=curLength表末插入O(1)
最坏情况:i=0表头插入O(n)
删除
1.表为空
2.删除是否合法
逆置
9个四次
链表(用指针实现变长的先行存储结构)
单链表:
双链表:
循环链表:
特点
- 顺序表需要预先分配存储空间,很难恰当预留空间
- 逻辑次序核物理次序的一致性,能够按序号(下标)直接存取元素,具有随机存取的特点
- 顺序表在插入删除时需要移动大量数据,因此其插入和删除效率低
- 难于改变顺序表的大小,需要重新船舰一个新的顺序表,把原表里的数据复制到新表,然后释放原表空间
- 顺序表比较适合静态的、经常做定位访问的线性表
习题