1.2.1
数据:是能输入计算机且能被计算机处理的各种符号的集合
数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理,简称元素,或记录、结点、顶点,一个数据元素由若干个数据项组成
数据项:构成数据元素的不可分割的最小单位
数据、数据元素、数据项三者关系:
数据>数据元素>数据项
例如:学生表>个人记录>学号、姓名...
数据对象:性质相同的数据元素的集合,数据的一个子集, 整数数据对象、学籍表
数据元素 与 数据:集合的个体
数据对象 与 数据:集合的子集
1.2.2数据结构
数据结构: 数据元素相互之间的关系称为结构;相互之间存在一种或多种特定关系的数据元素集合;数据结构是带结构的数据元素的集合
数据结构包括:
- 逻辑结构:数据元素之间的逻辑关系
- 数据元素及其关系在计算机内存中的表示(影像),称为数据的物理结构或数据的存储结构
- 数据的运算和实现,即对数据结构可以施加的操作以及这些操作在相应的存储结构上的实现
逻辑结构:与数据的存储无关,独立于计算机;是从具体问题抽象出来的数学模型
物理结构(存储结构):数据元素及其关系在计算机存储器中的结构(存储方式);是数据结构在计算机中的表示
逻辑结构与存储结构的关系:存储结构是逻辑关系的映像与元素本身的映像;逻辑结构是数据结构的抽象,存储结构是数据结构的实现;二者综合起来建立了数据元素之间的结构关系
逻辑结构的种类:
划分方法一:
- 线性结构:线性表、栈、队列、串
- 非线性结构:树、图
划分方法二——四类基本逻辑结构:
- 集合结构:数据元素之间除了同属于一个集合的关系,无任何其他关系
- 线性关系
- 树形结构
- 图状结构或网状结构
存储结构的种类:
- 顺序存储结构:一组连续的存储单元依次存储数据元素,数据元素的逻辑关系由存储位置表示;C语言用数组来实现顺序存储结构
- 链式存储结构:一组任意的存储单元存储,数据元素的逻辑关系用指针来表示;指针
- 索引存储结构:存储结点信息的同时建立附加的索引表
- 散列存储结构:根据结点关键字直接计算出该结点的存储地址
1.2.3数据类型和抽象数据类型
数据类型的作用:约束变量或常量的取值范围、操作
数据类型:一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称 =值的集合+值集合上的一组操作
抽象数据类型(ADT):是指一个数学模型以及定义在此数学模型上的一组操作
抽象数据类型的形式定义:D数据对象S:D上的关系集P:对D的基本操作集
基本操作的定义格式:基本操作名(参数表)、初始条件<初始条件描述>、操作结果<操作结果描述>
参数表:赋值参数只为操作提供输入值
引用参数以&大头,提供输入值,还返回操作结果
初始条件:执行操作前数据结构和参数应满足的条件,不满足,操作失败,返回出错信息;初始条件为空,省略
操作结果:操作正常完成后,数据结构的变化状况和应返回的结果
分配空间 指针变量 = new 数据类型
释放空间 delete 指针变量
异常结束 exit (异常代码)
1.4算法和算法分析
算法的定义:对特定问题求解方法和步骤的一种描述,是指令的有限序列
算法的描述:自然语言、流程图、伪代码、程序代码
程序 = 数据结构 + 算法
算法:解决问题的一种方法或过程
程序:用某种程序设计语言对算法的具体实现
数据结构通过算法实现操作,算法根据数据结构设计程序
算法特性:有穷性、确定性、可行性、输入、输出
算法设计的要求:正确、可读、健壮、高效
时间复杂度:n越大算法的执行时间越长
事前分析:算法选用何种策略、问题的规模、程序语言、编译程序产生机器代码质量、机器执行指令速度
排序:n为记录数 矩阵:阶数 多项式:项数 集合:元素个数 树:结点个数 图:顶点数或边数
时间复杂度数量级递增顺序:
常数O(1)、对数O(log2n)、线性O(n)、线性对数O(nlog2n)、平方O(n2)、立方O(n3)、K次方阶O(nk)、指数O(2n)
空间复杂度:
算法要占据的空间:本身要占据的空间:输入/出、指令、常数、变量;要使用的辅助空间
O(1)原地工作
抽象数据类型 = 数据的逻辑结构 + 抽象运算
- (单选题)6.在链式存储结构中,一个存储结点通常用于存储一个
- 数据项B. 数据元素C. 数据结构D. 数据类型
我的答案: B正确答案: B
(单选题)
设n是描述问题规模的非负整数,下面程序段的时间复杂度是( )。A. O(log2n)B. O(n)C. O(nlog2n)D. O(n2 )
我的答案: A正确答案: A
- 填空题(共4题,40分)
3. (填空题)
试分析下面各程序段的时间复杂度。
(1)x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y--;}
else x++;
我的答案:(1) O(1) 正确答案:(1) O(1)
- (填空题)试分析下面程序段的时间复杂度。
for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=0;
我的答案:(1) O(m*n)正确答案:(1)O(m*n)
5. (填空题)试分析下面各程序段的时间复杂度
i=1;
while(i<=n)
i=i*3;
我的答案:(1) O(log3n) 正确答案:(1) O(log3n)
6填空题)试分析下面程序段的时间复杂度
x=0;
for(i=1; i<n; i++)
for (j=1; j<=n-i; j++)
x++;
我的答案:(1) O(n的平方) 正确答案:(1)O(n2);O(n的平方)
三. 判断题(共4题,40分)
7. (判断题)如果数据元素值发生改变,则数据的逻辑结构也随之改变。
- A. 对
- B. 错
我的答案: 错正确答案: 错
8. (判断题)数据的逻辑结构与各数据元素在计算机中如何存储有关。
- A. 对
- B. 错
我的答案: 错正确答案: 错
9. (判断题)任何数据结构都具备3个基本运算,即插入、删除和查找。
- A. 对
- B. 错
我的答案: 错正确答案: 错 栈和队列不具备查找运算
10. (判断题)抽象数据类型指的是某种特定的数据类型。
- A. 对
- B. 错
我的答案: 错正确答案: 错 是指一个数学模型以及定义在此模型上的一组操作