1.1什么是数据结构
1.数据结构的定义:
- 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。
2.数据结构所处地位:
3.数据结构的作用:
数据结构是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。
1.2基本概念和术语
(层级从大到小)
数据:对客观事物符号的表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据对象:性质相同的数据元素的集合,是数据的一个子集。
数据元素:数据的基本单位,由若干个数据项组成。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
结构类型:
物理存储结构 :数据结构在计算机中的表示(映像)。
包括数据元素的表示和关系的表示,在计算机中表示信息最小单位是二进制位数的一位——位。用一个由若干为组合起来形成的一个位串表示一个数据元素(如用一个字长的位串表示一个整数,用8位二进制表示一个字符等),通常成这个位串为元素或结点。当数据元素由若干个数据项组成时,位串中对应与各个数据项的子位串成为数据域。
逻辑结构:描述结构定义中的“关系”。
数据结构之间的关系在计算机中的表示方法:
顺序映像和非顺序映像。——即顺序存储结构和链式存储结构。
数据的逻辑结构与物理结构与算法的关系:
- 算法的设计取决于选定的数据(逻辑)结构。
- 算法的实现依赖于采用的存储结构。
虚拟存储结构:即称数据结构在C虚拟处理器中的表示。
数据类型:指一个值的集合和定义在这个值集上的一组操作的总称。其分为原子类型和结构类型。
数据类型在计算机中应用广泛,在硬件角度,是作为解释计算机内存中信息含义的一种手段,而对数据类型的用户而言,实现了信息的隐蔽,即把用户不必了解的细节都封装在类型中。例如:用户使用““整数”类型,并不需要知道“整数”在计算机中如何表示,如何操作。
抽象数据类型:指一个数学模型以及定义在该模型上的一组操作,实质与数据类型是同一个概念。抽象数据类型的定义取决于它的一组逻辑特性,而与其在计算机内部如何表示与实现无关,即无论其内部结构如何改变,只要它的数学特性不变,都不影响外部的使用。
“抽象”的意义在于数据类型的数学抽象特性。
一个软件系统的框架应建立在数据之上,而不是操作之上。
1.3抽象数据类型的表示与实现
注意知识点:
在本书的数据结构伪代码的形参表中,以&打头的参数即为引用参数(涉及C++的引用知识)。
Status是函数的类型,其值是函数结果状态代码。
OK,FALSE,TRUE,ERROR也为函数结果状态代码。
1.4算法和算法分析
算法:对特定问题求解步骤的一种描述,是指令的有限序列,其中一条指令表示一个或多个操作。
特性:
算法设计的要求
算法效率的统计方法:
- 事后统计方法
- 事前分析估算方法
算法的描述方法:
(1)自然语言 (2)流程图 (3)伪代码 (4)程序设计语言
判断算法的效率:
(1)时间复杂度:
算法执行时间的增长率与问题规模函数f(n)随n增大仍相同。
(2)空间复杂度