线性表
1、顺序表示和实现
1、把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
2、特点:
1、逻辑上相邻的数据元素,其物理上也相邻。
2、若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组下标)。
3、优点:
1、逻辑相邻,物理相邻
2、可随机存取任意一个元素
3、存储空间使用紧凑
4、缺点:
1、插入、删除操作需要移动大量的元素
2、预先分配空间需要最大空间分配,利用不充分
3、表容量难以扩充
2、链式表示和实现
1、链表:n 个结点由指针链组成一个链表。它是线性表的链式存储映像,称为线性表的链式存储结构
2、特点:
1、其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。
2、用一组任意的存储单元存储线性表的数据元素
3、利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素
4、每个数据元素ai,除存储本身信息外,还需存储其直接后继的信息
3、存储方式:
1、数据域:存储元素数值或数据
2、指针域:存储直接后继或者直接前驱的存储位置
4、实现形式:单链表、双链表、多链表、循环链表
5、结构:头指针、头结点、首元结点
6、链表运算效率分析
1、时间复杂度:查找:O(n)、插入、删除:O(1)
2、空间复杂度:O(n)(多了一个指针域)
栈
1、栈
1、定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈
2、特点:先进后出(FILO)或后进先出(LIFO)
2、链栈:采用链式存储结构实现的栈
3、应用
1、用于保护现场和恢复现场
2、递归运算的有力工具
1、中缀表达式:31*(5-22)+70
2、后缀表达式:31,5,22,-,*,70,+
3、中缀表达式转后缀表达式
1、左括号:进栈
2、运算符:与栈顶符号进行优先级比较;若栈顶符号优先级低:此符号进栈。(默认栈顶若是左括号,左 低) 若栈顶符号优先级不低:将栈顶符号弹出并输出,之后进栈
3、右括号:将栈顶符号弹出并输出,直到匹配左括号
3、简化程序设计问题:如:回文、数制转换,表达式求值。