一:逻辑关系
1、线性关系
2:树型关系
3:图像关系
二:存储关系
1:顺序存储、数据在存储中会开辟一块连续的空间进行存储。一般使用数组来存储数据
2:链式存储、数据在内存中不需要开辟连续的空间进行存储
3:索引式存储
算法的复杂度
分为两种:①时间复杂度、花费的时间越少越好——高效性
②空间复杂度、占用的内存越少越好——低存储
时间复杂度的
1:常数阶(没有循环) 2:线性阶(一次循环) 3:平方阶(两次循环) 4:立方阶(三成循环) 5:对数阶()
计算复杂度的公式:f(n) = o((fn)) = o(log2(nn));
!!!!!常用的顺序存储,和链式存储
顺序表:线性表的顺序存储
1、逻辑关系:一对一关系(相邻)
2、存储关系、物理位置相邻,开辟一块连续的空间
顺序表和数组的区别:
a:顺序表借助数组来实现,但是不等价于数组
b:顺序表是线性表的顺序存储
c:线性表长度:表示顺序表的最大长度,数组容量不可变
d:顺序表长度:数组中有效数据的个数,可变
优缺点——————
优点:①操作简单,本质就是对数组操作、②查找数据方便、③数组有效数据便于确定
缺点:①效率低、②数组容量确定不能更改,数据超出范围则不能存储
单向链表:
链表优缺点
优点:①内存利用率高②链表没有满的说法可以一直装③插入删除效率极高
缺点:①查找数据效率低②占用内存空间多
单向循环链表:
双向链表:
双向循环链表:
概念:
- 双链表:前一个结点能找到后一个结点,后一个结点也能找到前一个结点。
- 双循环链表:前一个结点能找到后一个结点,后一个结点也能找到前一个结点。
- 让尾结点的next存储头结点
- 头结点中的prev存储着尾结点