一 数据结构基本概念
程序设计=数据结构+算法
1.数据结构是相互之间存在一种或多种特定关系的数据的集合。 逻辑
2.数据结构是计算机存储组织数据的方式。 物理形式
3.数据结构的选择直接影响及三级程序的运行效果(时间复杂度)和存储效率(空间复杂度)。
4.数据结构包括三个基本层次:
抽象层-逻辑结构
结构层-物理结构
实现层-运算结构
二 逻辑结构 强调关系
1.集:结构中的数据元素除了同处于一个集合外没有任何其它关系。 (一般不研究,难处理)
2.表:结构中的数据元素具有一种一一对应的前后关系。
3.树:结构中的数据元素具有一对多的父子关系。
4.图:结构中的数据元素具有多对多的交叉映射关系。
三 物理结构 强调存储方式
1.顺序结构:结构中的数据元素存放在一段连续的地址空间中。
a[i]<==>*(a+i),常数时间的随即访问。 时间开销与数据元素的数量没关系
缺点:线性时间的插入和删除(插入删除操作时间开销线性增加)。
空间利用率低(空间上必须连续,不能有效利用碎片内存)。
2.链式结构:结构中的数据元素存放在彼此独立的地址空间中。
每个独立的地址空间称为节点。
节点中除了保存数据以外,还需要保存相关节点的线索。
优点:空间利用率高。常数时间的插入和删除(插入删除效率高)。
缺点:线性时间的随即访问。空间复杂度高。
四 逻辑结构与物理结构的关系
数据结构 | 表 | 树 | 图 |
|
顺序 | 顺序表(数组) | 顺序树 | 链表数组 |
|
链式 | 链式表(链表) | 链式树 |
| |
每种逻辑结构采用何种物理结构实现,并没有一定之规,通常根据实现的难以程度,以及在时间和空间复杂度方面的要求,选择最合适的物理结构,亦不排除复合多种物理结构实现一种逻辑结构的可能。 |
五运算结构
1.创建与销毁
分配资源建立结构释放资源
2.插入与删除
增加/减少数据元素
3.获取和修改
遍历迭代随即访问
4.排序和查找
算法应用
六 数据结构的实现
1.堆栈:后进先出(试管)
1)基于顺序表的实现:初始化空间 栈顶指针 判空判满
记录栈顶位置:维护栈顶指针
2)基于链式表的实现:栈顶指针,判空
老鼠走迷宫 例子
2.队列:先进先出(水管)
1)基于顺序表的实现(点击指向具体代码):初始化空间前弹后压循环使用判空判满
2)基于链式表的实现(点击指向具体代码):前后指针判空
练习:用堆栈实现队列