- 数据结构
- 概念
a,分析问题,将实际问题抽象出一个人数学模型
b,设计一个解决问题的模型
c,编写代码,调试,测试得到最后结果
- 什么是数据结构
数据
客观事物用符号表示
结构·
数据之间的存在的关系
数据结构:计算机存储和组织数据符号,相互之间的关系集合
- 数据结构分类:
逻辑结构 :数据之间的关系(描述数据之间的关系)
a,集合结构
数据与数据之间除了属于同一集合,再无其他关系
b,线性结构
数据之间呈现一对一关系,线性关系
C,树形结构
数据与数据之间呈现一对多关系,层次,从属,(前只有一个元素,后可有多个元素)
d,图形关系
数据与数据之前呈现多对多关系
存储结构:描述的存储
顺序存储
离散存储(链式存储)
数据运算:
运算:对存在关系的数据进行处理
增删改查
- 算法
算法:解决实际问题的步骤描述
实现特定功能的步骤方法
通常解决一个问题有多种方式(算法),不同的算法的效率不同
- 消耗的时间
算法执行的时间,时间越少
- 消耗的空间
算法执行的时候所占用的内存资源越少
事先估算法:
时间:
时间复杂度
语句频度算法中一条语句重复的次数
时间复杂度,算法所有语句频度之和
T(n),时间复杂度,n,问题规模 大O表示,O(n),O(n^2) 常数 O(1)
空间:
空间复杂度,
程序执行时所占用的内存资源大小,
S(n),n问题规模:
常数阶: O(1) int a = 1;
线性阶: O(n) 循环
指数阶: O(n^2) for(for)
对数阶 O(log n) for( Ii = 0;i< n:I = i*2)
- 线性表
线性表,线性结构,关系为线性关系,数据与数据之间呈现一对一的关系
线性表具有唯一前驱,唯一后继,首元素没有前驱,尾元素没有后继
顺序表的存储:
按照顺序存储的线性表,顺序表(逻辑结构是线性关系,存储结构为顺序存储)
顺序表的操作:
创建表
删除表
顺序表元素的增删改查,遍历
顺序表的表示:
结构体 {
数组 / 指针malloc
当前顺序表的个数
整个顺序表的长度
}
struct 名字{
元素类型 名字[];
int 长度;
int 个数;}
全局变量,静态变量 ,未初始化值零