数据结构:
有一种或多种特定关系的集合
data struct = (data,relation);
data:数据集合
relation:关系集合
数据:信息的载体
数据元素:数据的组成单位,一般作为一个整体考虑
数据项:数据元素的组成单位
数据对象:用特定结构体定义的数组
struct stu{
int age;
char name[32];
}
struct stu zc;//数据元素
zc.age=10;//数据项
struct stu stus;//数据对象
关系:
逻辑结构:
线性:一对一的关系,除了第一个没有唯一前驱,最后一个没有唯一后继,
其余元素都有唯一前驱和唯一后继
如:表、栈(fd满递减)、队列
非线性:
如:
树:一对多的关系,除了第一个元素没有唯一前驱,其余的元素都有唯一前驱并且可以有多个后继(压缩、排序)
图:多对多的关系,
存储结构:
顺序存储:类似于数组,把逻辑上相邻的数据元素在物理地址上存储上也相邻
链式存储:把逻辑上相邻的数据元素在物理地址上可以不相邻
数据域:存放数据
指针域:指向下一个数据元素的地址
索引存储
散列存储
运算:
增、删、改、查、判空、判满、清空、销毁、排序
算法:
一个有穷规则的有序集合
冒泡排序、选择排序、插入排序、希尔排序、快速排序
算法评判标准:
空间复杂度
时间复杂度
数据结构与算法相互依存
实现:
顺序表:一对一,逻辑上与物理上都相邻
链表:一对一,逻辑上相邻,物理上可以不相邻
顺序栈:一对一,逻辑上相邻,物理位置相邻,先进后出
链栈:一对一,逻辑上相邻,物理位置可以不相邻,先进后出
循环队列:一对一,逻辑上相邻,物理位置相邻,先进先出
链式队列:一对一,逻辑上相邻,物理位置可以不相邻,先进先出
顺序树:逻辑上一对多,将节点存储在一个数组中
链树:逻辑上一对多,物理位置可以不相邻