8O(o^2)
时间复杂度:递归的时间复杂度,用不递归的来表示
数据结构:逻辑结构和存储结构
存储结构:顺序存储,链式存储(单链表)
准确率,召回率
不考虑外存和内存的交换
三大数据结构:表,图。数
两个基本操作
顺序存储:数组
链式存储:链表
线性表,简称表,n>=0具有相同类型的数据元素的有限序列
- 空表:长度等于0L=()
- 下表i表示该元素在表中的位置或序号。
线性表的逻辑结构:
- 有限性
- 相同性
- 顺序性
线性表的抽象数据类型定义
Data:相同类型,前驱和后继关系
Initlist:初始化
DestroyList:删除
Locate:定位
Insert:
Delect:
Empty;判断是否为空
ADT:
(1)线性表的基本操作根据实际应用是而定;
(2)复杂的操作可以通过基本操作的组合来实现;
(3)对不同的应用,操作的接口可能不同。
线性表的存储结构:
顺序表:随机存储:
存储位置怎么求:
Loc(ai)=Loc(a1) + (i -1)×c
顺序表的实现:插入:
- 操作接口: void Insert(int i, T x)
- 插入前:(a1, … , ai-1, ai , … , an)
- 插入后:(a1, … , ai-1, x , ai, … , an)
考虑边界问题
表满:length>=MaxSize 合理的插入位置:1≤i≤length+1(i指的是元素的序号)
表满抛出异常
伪代码
1. 如果表满了,则抛出上溢异常;
2. 如果元素的插入位置不合理,则抛出位置异常;
3. 将最后一个元素至第i个元素分别向后移动一个位置;
4. 将元素x填入位置i处;
5. 表长加1;