哈工大-数据结构课件-严蔚敏《数据结构》(C语言版).ppt_第1页
哈工大-数据结构课件-严蔚敏《数据结构》(C语言版).ppt_第2页
哈工大-数据结构课件-严蔚敏《数据结构》(C语言版).ppt_第3页
哈工大-数据结构课件-严蔚敏《数据结构》(C语言版).ppt_第4页
哈工大-数据结构课件-严蔚敏《数据结构》(C语言版).ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析,第1章 绪论,本章重点难点,重点: 数据结构的逻辑结构、存储结构以及基本操作的概念及相互关系;抽象数据类型(ADT)的概念和实现方法,算法的时间复杂性和空间复杂性分析。 难点: 抽象数据类型(ADT)的概念和实现方法;算法的时间复杂性和空间复杂性分析。,1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析,第1章 绪论,第1章 绪论,1.1 数据结构及其讨论范畴,算法+数据结构 = 程序设计,问题,构建数学模型,算法实现, 在

2、解决问题时可能遇到的典型的逻辑结构(数据结构) 逻辑结构的存储映象(存储实现) 数据结构的相关操作及其实现。,数据结构是一门讨论描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现的学科。,第1章 绪论,1.1 数据结构及其讨论范畴,例1 求 n 个整数中的最大值。 例2 交叉路口的红绿灯管理。 例3 煤气管道的铺设问题。 ,说明: 例子中的数学模型正是数据结构要讨论的问题。,第1章 绪论,1.1 数据结构及其讨论范畴,例,计算机的发展,数据处理的种类,数据,数值数据,非数值数据,数 (整数,实数) 字符 字符串 文字 图形 图象 声音,对客观对象的符号表示,结果数据,

3、第1章 绪论,1.1 数据结构及其讨论范畴,软件 硬件 应用领域,数值问题与非数值问题,数值问题 例1 已知:游泳池的长len和宽wide,求面积area,设计 求解问题的方法 编程,建模型: 问题涉及的对象:游泳池的长len 宽wide,面积area; 对象之间的关系:area=lenwide,第1章 绪论,1.1 数据结构及其讨论范畴,学号 姓名 性别 出生日期 籍贯 入学成绩 所在班级 00201 杨润生 男 82/06/01 广州 561 00计算机200102 石磊 男 83/12/21 汕头 512 00计算机100202 李梅 女 83/02/23 阳江 532 00计算机2 0

4、0301 马耀先 男 82/07/12 广州 509 00计算机3,非数值问题 已知某级学生情况 , 要求分班按入学成绩排列顺序。,说明: 在此类文档管理的数学模型中, 计算机处理的对象之间通常存在着一种最简单的线性关系 , 该数学模型称为线性模型。,第1章 绪论,1.1 数据结构及其讨论范畴,例,非数值问题,第1章 绪论,1.1 数据结构及其讨论范畴,下棋程序-国际象棋: 每次需要考虑的合乎规则的着法平均只有35步回合,计算机预先分析7至8个回合的着法。若设为7个回合,则有超过1亿亿亿个不同的变化,经简化后,仍有500亿至600亿个变化。多分析一步,增加18亿个变化。根据计算机“深蓝”的速度

5、,平均5分钟走一步。,算法:对弈的规则和策略棋盘及棋盘的格局 模型:根据计算机“深蓝”的速度,例,迷宫问题:在迷宫中,每走到一处,接下来可走的通路有三条。计算机处理的这类对象之间通常不存在线性关系。若把从迷宫入口处到出口的过程中所有可能的通路都画出,则可得一棵“树”。,第1章 绪论,1.1 数据结构及其讨论范畴,例,第1章 绪论,1.1 数据结构及其讨论范畴,对每种数据结构,主要讨论如下三方面的问题: 数据的逻辑结构 数据元素之间的逻辑关系,是具体关系的抽象。 数据的存储结构(物理结构): 数据元素及其关系在计算机内存中的表示; 数据的运算 即对数据施加的操作。定义在数据的逻辑结构上的抽象的操

6、作。,1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 数据结构的分类及表示 1.4 抽象数据类型的表示与实现 1.5 算法和算法分析,第一章 绪论,数据:是信息的载体,能够被计算机识别、存储和加工处理。如整数,实数,字符串、图象、声音等都是数据。 数据元素:数据的基本单位。相当于“记录”,在计算机程序中通常作为一个整体考虑和处理。 数据项: 相当于记录的“域”或字段, 是数据不可分割的最小单位。如学号。 数据对象:性质相同的数据元素的集合。如所有班名相同的记录集合。,第1章 绪论,1.2 基本概念和术语,数据结构类型,第1章 绪论,1.2 基本概念和术语,数据结构是数据之间的相互

7、关系, 即数据的组织形式。,线性结构:除第一个元素和最后一个元素之外,其他元素都有且仅有一个直接前驱,有且仅有一个直接后继; 非线性结构:其逻辑特征是一个结点可能有多个直接前驱和直接后继;,第1章 绪论,1.2 基本概念和术语,数据的逻辑结构,学号 姓名 专业 政治面藐 001 王洪 计算机 党员 002 孙文 计算机 团员 003 谢军 计算机 团员 004 李辉 计算机 团员 005 沈祥福 计算机 党员 006 余斌计算机 团员 007 巩力计算机 团员 008 孔令辉 计算机 团员,学生间学号顺序关系 是一种线性结构关系,第1章 绪论,学生基本情况登记表,记录了每个学生的学号、姓名、专

8、业、政治、面貌,表中的记录是按学生的学号顺序排列的。,1.2 基本概念和术语,例,家族的族谱:假设某家族有10个成员A, B, C, D, E, F, G, H,I, J,他们之间的血缘关系可以用如下图表示。,第1章 绪论,1.2 基本概念和术语,例,顺序存储方法:数组 链接存储方法:指针 索引存储方法 散列存储方法,说明: 同一逻辑结构的不同存储结构,冠以不同的数据结构名称。如顺序表、链表、散列表。 运算不同,数据结构也不同。如栈和队列。更进一步,顺序栈、链栈、顺序队列、链队列。,第1章 绪论,1.2 基本概念和术语,数据的存储结构,算法:数据运算的描述 数据结构:数据的逻辑结构和存储结构,

9、算法+数据结构=程序,第1章 绪论,1.2 基本概念和术语,1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析,第1章 绪论,抽象数据型Abstract Data Types(ADT),定义:抽象数据型是一个数学模型和在该模型 上定义的操作的集合,ADT特点: 降低了软件设计的复杂性; 提高了程序的可读性和可维护性; 程序的正确性容易保证,第1章 绪论,1.3 抽象数据类型的表示与实现,在软件设计中,可以对哪三种不同的对象进行抽象?,第1章 绪论,1.3 抽象数据类型的表示与实现,第1章 绪论,1.3 抽象数据类型的表示与实现,软件设

10、计,软件设计是对数据抽象、过程抽象和控制抽象。,抽象数据型的规格描述,完整性:反映所定义的抽象数据型的全部 特征; 统一性:前后协调,不自相矛盾; 通用性:适用于尽量广泛的对象; 不依赖性:不依赖于程序设计语言。,语法:给出操作的名称、I/O参数的数目和类型; 语义:由一组等式组成,定义各种操作的功能及相互之间的关系;,规格描述的两个方面: 语法和语义,第1章 绪论,1.3 抽象数据类型的表示与实现,抽象描述 (高级语言)编写的程序 三条原则: 符合规格描述的定义; 有尽可能好的通用性; 尽可能独立于程序的其它部分,自底向上与自顶向下相结合、由简单到复杂,第1章 绪论,1.3 抽象数据类型的表

11、示与实现,抽象数据型的实现,多层次抽象技术,抽象数据类型的形式描述 ADT = ( D,S,P ),其中: D 是数据对象; S是 D 上的关系集;P是 D 的基本操作集。,第1章 绪论,1.3 抽象数据类型的表示与实现,数据类型和抽象数据类型, 抽象数据类型需要通过高级编程语言中已经实现的数据类型(通常称之谓固有数据类型)来实现; 抽象数据类型的实现包括数据结构的实现和操作的实现。,第1章 绪论,1.3 抽象数据类型的表示与实现,抽象数据类型“复数”的定义为: ADT Complex 数据对象:D = e1,e2 | e1,e2 属于 RealSet 数据关系:R1 = | e1是复数的实部

12、, e2是复数的虚部 其中用两个实数来表示复数,将复数定义为两个实数的有序对,并约定实部是前驱,虚部是后继。,例,设计函数 DELEVAL(LIST ,第1章 绪论,1.3 抽象数据类型的表示与实现,例,1.1 数据结构及其讨论范畴 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析,第1章 绪论,第1章 绪论,1.4 算法与算法分析,算法(algorithm)的概念,算法是对问题求解过程的一种描述,是为解决一个或一类问题给出的一个确定的、有限长的操作序列。严格说来,一个算法必须满足以下五个重要特性,关于本书采用的类语言描述:C 或 C+,自然语言; 程序设计语言

13、; 类语言。,算法描述,第1章 绪论,1.4 算法与算法分析,算法的基本特征,有穷性:算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成。 确定性:组成算法的操作必须清晰无二义性。 可行性:算法中的所有操作都必须足够基本,都可以通过已经实现的基本操作运算有限次实现之。 输入:作为算法加工对象的量值,通常体现为算法中的一组变量。些算法的字面上可以没有输入,实际上已被嵌入算法之中。 输出:它是一组与输入有确定关系的量值,是算法进行信息加工后得到的结果,这种确定关系即为算法的功能。,在设计算法时通常应考虑以下原则,算法必须是“正确的” 所谓算法是正确的,除了应该满足算法说明中写明的“功能”之外

14、,应对各组典型的带有苛刻条件的输入数据得出正确的结果。 在算法是正确的前提下,算法的可读性是摆在第一位的,这在当今大型软件需要多人合作完成的环境下是换重要的,另一方面,晦涩难读的程序易于隐藏错误而难以调试。 应有很好的“可读性”,第1章 绪论,1.4 算法与算法分析,在设计算法时通常应考虑以下原则,必须具有“健壮性” 算法的健壮性指的是,算法应对非法输入的数据作出恰当反映或进行相应处理,一般情况下,应向调用它的函数返回一个表示错误或错误性质的值。 算法的效率 应考虑所设计的算法具有“高效率与低存储量”。高效率与低存储量是矛盾的,要视具体问题而定。,第1章 绪论,1.4 算法与算法分析,影响时间

15、特性的四个因素,定义 语句频度:语句重复执行的次数,第1章 绪论,1.4 算法与算法分析, 程序运行时输入数据的总量; 对源程序编译所需的时间; 计算机执行每条指令所需的时间; 程序中指令重复执行的次数。,所有算法均以函数形式给出, 算法的输入数据来自参数表; 参数表的参数在算法之前均进行类型说明; 有关结点结构的类型定义,以及全局变量的说明等均在算法之前进行说明,描述算法的书写规则,第1章 绪论,1.4 算法与算法分析,评价算法标准,本课程采用以求解问题的基本操作(原操作)的执行次数作为算法时间的度量。,O(n3) 称为矩阵相乘算法时间复杂度; O(n3)表示矩阵相乘算法执行时间与n3成正比

16、, 即O(n3)与n3 同一数量级;,n 阶矩阵相乘的算法,For ( i = 1; i=n; i+ ) For (j = 1; j=n; j+ ) c i j = 0 ; For (k = 1; k= n; k+ ) c i j += a i k * b k j ,乘法 加法 执行次数均为 n3,例,第1章 绪论,1.4 算法与算法分析,说明:有些算法,基本操作执行次数与问题的输入数据有关,这时可考虑 算法平均时间复杂度 算法在最坏情况下的时间复杂度,算法的时间复杂度T(n),第1章 绪论,1.4 算法与算法分析,一般来说,设算法中基本操作的执行次数是问题规模n的某个函数f(n),算法的时间复杂度记作: T(n) = O(f(n) 它表示随问题规模n的增大,算法执行时间的增长率与f(n) 的增长率相同。,#define N 100 void scheme() int i, j, k, count, money; for (i = 0; i=N; i+ ) for (j = 0; j=N; j+ ) for (k=0; k=N; k+) count=i+j+k; mon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论