严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)
详解
第1章绪论
一、什么是数据结构
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。
二、基本概念和术语
1数据
数据是对客观事物的符号表示,是计算机科学中所有能输入到计算机中并能被计算机程序处理的符号的总称。
2数据元素
数据元素是数据的基本单位。
3数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集。
4数据结构
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。
(1)数据结构的基本结构
根据数据元素之间关系的不同特性,通常有下列四类基本结构:
①集合。数据元素属于“同一个集合”,并无其他复杂关系。
②线性结构。数据元素之间存在一个对一个的关系。
③树形结构。数据元素之间存在一个对多个的关系。
④图状结构或网状结构。数据元素之间存在多个对多个的关系。
【注意】区分这四种基本结构可以根据元素间的对应关系。
如图1-1所示为上述四类基本结构的关系图。
图1-1 四类基本结构的关系图
(2)数据结构的形式定义
数据结构的形式定义为:
Data_Structure=(D,S)
其中:D表示数据元素的有限集,S表示D上关系的有限集。
(3)数据结构在计算机中的表示
数据结构包括数据元素的表示和关系,在计算机中称为数据的物理结构(又称存储结构)。
其中,关系有两种表示方法:顺序映象和非顺序映象。这两种表示方法对应两种存储结构:顺序存储结构和链式存储结构。
a.顺序映象:用相对位置来表示数据元素之间的逻辑关系。
b.非顺序映象:用指针表示数据元素之间的逻辑关系。
5数据类型
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
6抽象数据类型
抽象数据类型(ADT)由一个值域和定义在该值域上的一组操作组成。
【注意】抽象数据类型是对数据类型架构的一种全局体现,使我们能够更加清晰地看待某一数据类型。
7多形数据类型
多形数据类型是指其值的成分不确定的数据类型。
8数据操作的类型
基本的操作主要有:
(1)插入
(2)删除
(3)更新
(4)查找
(5)排序
从操作的特性来分,所有的操作可以归结为两类:
加工型操作:改变了(操作之前的)结构的值;
引用型操作:即不改变结构的值,只是查询或求得结构的值。
上述5种操作中除“查找”为引用型操作外,其余都是加工型操作。
9算法
【定义】算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。
【特性】
(1)有穷性
(2)确定性
(3)可行性
(4)输入
(5)输出
【注意】在考试中这五个特性可能出现在选择或者填空题中(通常直接考察其名称)。
三、抽象数据类型的表示与实现
四、算法和算法分析
1算法的描述
算法需要用一种语言来描述,程序框图,程序设计语言等都能对算法进行描述。【注意】考研笔试中,如果在对应语法不确定的情况下,使用伪码通常也是可以的。2算法设计的要求
(1)正确性
(2)可读性
(3)健壮性
(4)效率与低存储量需求
3算法效率的度量
算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,度量一个程序的执行时间通常有两种方法:
(1)事后统计
(2)事前分析估算
①事先考虑消耗时间的因素
②时间复杂度
时间复杂度是关于问题规模的函数,通常用O表示,常见时间复杂度按照数量级递增排列为:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(n k)<O(2n)
【注意】需能够对具体的算法进行时间复杂度的分析与计算,尤其在考研中算法时间复杂度的计算不可避免。
4算法的存储空间需求
算法的空间复杂度是对算法运行所占空间的度量。
在度量时一般只考虑算法运行所需额外开销的多少,包括算法实现时定义的中间变量,数组等对存储空间的影响。
原地工作:算法运行所需的额外空间相对输入数据量是常量。