一、数据、数据元素、数据元素的数据类型
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
- 数据是人们利用文字符号、数字符号及其其他规定的符号对现实世界的食物及其活动所作的抽象描述。
- 表示一个事物的一组数据称作一个数据元素。
- 构成数据元素的数据称作该数据元素的数据项。
- 没有实际含义的数据元素称为抽象数据元素。
二、数据的逻辑结构
-
数据元素之间的相互联系方式称为数据的逻辑结构。
-
数据的逻辑结构有三种:线性结构、树状结构、图形结构。
-
线性结构
-
树状结构
-
图形结构
三、数据的存储结构
-
数据元素在计算机中的存储结构称为数据的存储结构。
-
数据的存储结构有两种:顺序存储结构、链式存储结构。
-
顺序存储结构:数据元素存储在一块连续地址空间的内存中 。
-
逻辑上相邻的数据元素,物理上也相邻。
-
指针是指向物理存储单元地址的变量。我们把由数据元素域和指针域组成的一个结构体称为一个结点。
-
链式存储结构:使用指针把相互直接关联的结点(即直接前驱节点或直接后继结点)链接起来。
-
逻辑上相邻的数据元素,在物理上 (即内存存储位置上)不一定相邻。
四、数据的操作
- 一种数据类型的数据允许进行的某种操作称作数据的操作,一种数据类型的数据所有的操作称作数据的操作集合。
五、抽象数据类型
- 类型是一组值的集合。
- 数据类型是指一个类型和定义在这个类型上的操作集合。
- 抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合。
- 数据结构讨论线性表、堆栈、队列、串、数组、广义表、树、二叉树、图等基本数据结构的功能和设计方法。
六、算法及其衡量标准
- 算法是描述求解问题方法的操作步骤集合。
算法设计应满足的性质:
-
输入性
⭐ 具有零个或若干个输入量。
-
输出性
⭐ 至少产生一个输出量或执行一个有意义操作。
-
有限性
⭐ 执行语句的序列是有限的。
-
确定性
⭐ 每条语句的含义明确,无二义性。
-
可执行性
⭐ 每条语句都应在有限的时间内完成。
算法设计应满足的目标:
-
正确性
⭐ 算法应确切地满足具体问题的需求。
⭐ 算法设计的基本目标。 -
可读性
⭐ 算法的可读性有利于人们对算法的理解,这既有利于程序的调试和维护,也有利于算法的交流和移值。
⭐ 算法的可读性主要体现在两个方面:一是变量名、常量名、函数名等命名应见名知意;二是要有足够多的注释。 -
健壮性
⭐ 当输入非法数据时,算法要能做出适当的处理,而不应产生不可预料的后果。
-
高时间效率
⭐ 算法的时间效率是指运行算法需要花费时间的多少。
⭐ 对于同一个问题,如果有多个算法,则应尽可能选择运行时间短的算法。 -
高空间效率
⭐ 算法的空间效率是指运行算法需要占用的额外内存空间的多少。
⭐ 对于同一个问题,如果有多个算法,则尽可能选择占用内存空间少的算法。
【注意】 算法的高时间效率和高空间效率通常是矛盾的,当矛盾发生时,大多数情况优先考虑高时间效率。