线性表:具有相同线性结构的数据元素所构成的一个有限的序列(反应逻辑关系)
。先看逻辑结构,再看存储结构
研究方式:
逻辑结构
存储结构
常用算法
一、线性表及其顺序存储结构
顺序存储结构:一组连续的存储单元依次存储线性表的每个元素(eg;数组)
特点:逻辑相邻,物理相邻
* 采用顺序存储结构的线性表通常称为顺序表
(一)、线性表的基本运算操作:
1、初始化,设置一个空表
2、求长度,返回表中的元素个数
3、求序号为 i 的元素值
4、求值为x的元素值在表中的位置
5、在第 i 个(指定)元素前面插入元素x
6、删除表中的第 i 个元素 ;删除给定值x的元素
7、取出 ai 元素的前趋与后继
8、合并、拆分、复制、排序、逆转、判空等
Zu:线性表的序号统一从 1 开始,数组下标是从0开始。
(二)、插入运算的异常处理:
1、存储空间已满时为 上溢 错误,不能插入,算法结束
2、i > n 时,最后一个元素之后插入
3、i < 1 时,第一个元素之前插入(n代表有效位数)
(三)、删除运算的异常处理:
1、i < 1 或 i > n 时,认为删除无效
2、线性表为空时为 下溢 错误,不能删除,算法结束
(四)、顺序表操作注意事项
1、表结构的定义:(即存储结构的定义)
。可以定义为 局部 、全局变量,也可以动态申请空间。
。最大表空间的定义。
2、表溢出和非法位置的反馈提示
3、节点移动,长度修改
二、栈(顺序结构)
1、定义:限定在一端进行插入删除的线性表。
栈逻辑特征:FILO first in last out
LIFO last in first out
2、概念 : top bottom push pop
栈顶 栈底 入栈 出栈
一般,允许插入删除操作的一端称为栈顶,因此,栈顶的位置是动态变化的。
栈用数组表示,(数组的下标小对应低地址)。
3、影响栈的算法的要素:
1)、数组的隐含属性(起始下标、元素个数)
2)、栈的生长方向(低——>高;高——>低)
3)、栈顶、栈底的定义形式
4、顺序栈的基本运算
1)、初始化空栈
2)、判断栈空( *top = 0),判断栈满( *top = m)
3)、入栈( * top = *top + 1 ;),退栈
4)、复制栈顶元素
5、栈的应用
逆序、重整序、回溯问题求解、递归过程的实现。
7、应用
1)、中缀表达式
设立两个堆栈:
OPND:存操作数
OPTR:存操作符
2)、背包问题