数据结构绪论
数据——符号
数据元素——记录——人
数据项——数据的最小单位——手、姓名等
数据对象
是性质相同的数据元素的集合,是数据的子集。
在实际应用中,我们都将数据对象简称为数据。
数据结构——关系
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
结构
按照视点的不同,我们把数据结构分为逻辑结构和物理结构。
逻辑结构:是指数据对象中数据元素之间的相互关系。
- 集合结构(平等——同属一个集合)
- 线性结构(一对一)
- 树形结构(一对多)
- 图形结构(多对多)
我们在用示意图表示数据的逻辑结构时,要注意两点:
- 将每一个数据元素看做一个结点,用圆圈表示。
- 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。
可以看出,逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。
物理结构:是指数据的逻辑结构在计算机中的存储形式。
数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最为关键的,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
数据元素的存储结构形式有两种:
- 顺序存储——排队占位
- 链式存储
逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存中。
数据类型
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作。
描述抽象数据类型的标准格式:
小结:
算法
算法的定义:算法是解决特定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作。
算法的特性:有穷性、确定性、可行性、输入、输出。
算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求。
算法复杂度
线性表
线性表(List):零个或多个数据元素的有限****序列。
线性表的抽象数据类型
总结:
栈与列队
栈是限定仅在表尾(栈顶-top)进行插入和删除操作的线性表。
我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。