绪论
1.数据结构中的基本概念
数据:信息的载体,能被输入到计算机中并被计算机程序识别和处理的符号的集合
数据元素:数据的基本单位,由若干个数据项组成,可以把数据元素比作数据库的某张表中的一行,如某一条学生记录
数据对象:具有相同性质的数据元素的集合,可以比作数据库中的一张表
数据类型: 一个值的集合和定义在改集合上的一组操作的总称
原子类型:值不可再分的数据类型
结构类型:值可以分为若干其他的数据类型
抽象数据类型:指一个数学模型以及定义在此数学模型上的一组操作。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。
数据结构:相互之间存在特定关系的数据元素的集合,包含
逻辑结构
存储结构
数据的运算
算法的设计取决于所选定的逻辑结构,而算法的实现依赖存储结构
2.数据结构的三要素
逻辑结构:数据元素之间的逻辑关系
线性结构
线性表:数组、链表、广义表
操作受限的线性表:栈、队列
非线性结构
集合
树形结构
图
存储结构:表示的是数据如何在计算机中被表示出来
顺序存储:逻辑上相邻的元素存在一段物理位置相邻的存储单元中
链式存储:逻辑上相邻的元素在物理上不相邻,用指针把相邻元素联系起来
索引存储:当数据元素比较大时,可以采用索引存储,索引是指用指针来指示数据元素,而指针中只保留数据元素的关键信息和位置,这样使得检索速率大大提高
散列存储(Hash存储):一种用存储空间换取查找效率的存储方式,基本思想史通过一个函数,计算所给定的关键值得到数据的物理位置
数据的运算:
定义在数据集上的一组操作的定义和实现,定义是针对逻辑结构而言的,即数据集支持哪些操作,而实现是针对存储结构而言的,即应该怎么实现这些操作
3.算法和算法评价
算法的特性:
有穷性:一个算法总是在执行有限步骤之后结束
确定性:无二义性
可行性:可以被实现
输入:一个算法可以有0个或多个输入
输出:一个算法只要有一个输出
时间复杂度:执行算法所需时间的量级同数据规模之间的关系
空间复杂度:执行算法所需的空间的量级同数据规模之间的关系
*算法原地工作:指的是算法工作所需要的存储空间同问题规模没有关系,是一个常数