数据结构严蔚敏PPT讲述

上传人:最**** 文档编号:116845512 上传时间:2019-11-17 格式:PPT 页数:814 大小:3.79MB
返回 下载 相关 举报
数据结构严蔚敏PPT讲述_第1页
第1页 / 共814页
数据结构严蔚敏PPT讲述_第2页
第2页 / 共814页
数据结构严蔚敏PPT讲述_第3页
第3页 / 共814页
数据结构严蔚敏PPT讲述_第4页
第4页 / 共814页
数据结构严蔚敏PPT讲述_第5页
第5页 / 共814页
点击查看更多>>
资源描述

《数据结构严蔚敏PPT讲述》由会员分享,可在线阅读,更多相关《数据结构严蔚敏PPT讲述(814页珍藏版)》请在金锄头文库上搜索。

1、算法与数据结构 教材:数据结构(C语言版)。严蔚敏,吴伟民 编 著。清华大学出版社。 参考文献: 1 数据结构 。张选平,雷咏梅 编, 严蔚敏 审 。 机械工业出版社。 2 数据结构与算法分析。Clifford A. Shaffer著, 张 铭,刘晓丹 译。电子工业出版社。 3 数据结构习题与解析(C语实言版)。李春葆。 清华大学出版社。 4 数据结构与算法。夏克俭 编著。国防工业出 版社。 第1章 绪 论 目前,计算机已深入到社会生活的各个领域,其应 用已不再仅仅局限于科学计算,而更多的是用于控制, 管理及数据处理等非数值计算领域。计算机是一门研究 用计算机进行信息表示和处理的科学。这里面涉

2、及到两 个问题:信息的表示,信息的处理。 信息的表示和组织又直接关系到处理信息的程序的 效率。随着应用问题的不断复杂,导致信息量剧增与信 息范围的拓宽,使许多系统程序和应用程序的规模很大 ,结构又相当复杂。因此,必须分析待处理问题中的对 象的特征及各对象之间存在的关系,这就是数据结构这 门课所要研究的问题。 编写解决实际问题的程序的一般过程: 如何用数据形式描述问题?即由问题抽象出一个 适当的数学模型; 问题所涉及的数据量大小及数据之间的关系; 如何在计算机中存储数据及体现数据之间的关系? 处理问题时需要对数据作何种运算? 所编写的程序的性能是否良好? 上面所列举的问题基本上由数据结构这门课程

3、来回答。 计算机求解问题的一般步骤 1.1 数据结构及其概念 算法与数据结构是计算机科学中的一门综合性专 业基础课。是介于数学、计算机硬件、计算机软件三者 之间的一门核心课程,不仅是一般程序设计的基础,而 且是设计和实现编译程序、操作系统、数据库系统及其 他系统程序和大型应用程序的重要基础。 1.1.1 数据结构的例子 姓名电话电话 号码码 陈陈海13612345588 李四锋锋13056112345 。 例1:电话号码查询系统 设有一个电话号码薄,它记录了N个人的名字和其 相应的电话号码,假定按如下形式安排:(a1, b1),(a2, b2),(an, bn),其中ai, bi(i=1,2n

4、) 分别表示某人的 名字和电话号码。 本问题是一种典型的表格问题。如表 1-1,数据与数据成简单的一对一的线性关系。 表1-1 线性表结构 例2:磁盘目录文件系统 磁盘根目录下有很多子目录 及文件,每个子目录里又可以包 含多个子目录及文件,但每个子 目录只有一个父目录,依此类推 : 本问题是一种典型的树型结 构问题,如图1-1 ,数据与数据 成一对多的关系,是一种典型的 非线性关系结构树形结构。 图图1-11-1 树形结构结构 例3:交通网络图 从一个地方到另外一个地方可以有多条路径。本问 题是一种典型的网状结构问题,数据与数据成多对多的 关系,是一种非线性关系结构。 佛山 惠州 广州 中山

5、东莞 深圳 珠海 图1-2 网状结构 数据(Data) :是客观事物的符号表示。在计算机科 学中指的是所有能输入到计算机中并被计算机程序处理 的符号的总称。 数据元素(Data Element) :是数据的基本单位,在 程序中通常作为一个整体来进行考虑和处理。 一个数据元素可由若干个数据项(Data Item)组成。 数据项是数据的不可分割的最小单位。数据项是对客观 事物某一方面特性的数据描述。 数据对象(Data Object):是性质相同的数据元素的集 合,是数据的一个子集。如字符集合C=A,B,C, 。 1.1.2 基本概念和术语 数据结构(Data Structure):是指相互之间具

6、有(存在 )一定联系(关系)的数据元素的集合。元素之间的相互联 系(关系)称为逻辑结构。数据元素之间的逻辑结构有四 种基本类型,如图1-3所示。 集合:结构中的数据元素除了“同属于一个集合” 外,没有其它关系。 线性结构:结构中的数据元素之间存在一对一的 关系。 树型结构:结构中的数据元素之间存在一对多的 关系。 图状结构或网状结构:结构中的数据元素之间存 在多对多的关系。 数据结构的形式定义是一个二元组: Data-Structure=(D,S) 其中:D是数据元素的有限集,S是D上关系的有限集。 例2:设数据逻辑结构B=(K,R) K=k1, k2, , k9 R= , , 画出这逻辑结构

7、的图示,并确定那些是起点,那些是终点 1.1.3 数据结构的形式定义 图1-3 四类基本结构图结构图 1.1.4 数据结构的存储方式 数据元素之间的关系可以是元素之间代表某种含义 的自然关系,也可以是为处理问题方便而人为定义的关 系,这种自然或人为定义的 “关系”称为数据元素之间 的逻辑关系,相应的结构称为逻辑结构。 数据结构在计算机内存中的存储包括数据元素的 存储和元素之间的关系的表示。 元素之间的关系在计算机中有两种不同的表示方法 :顺序表示和非顺序表示。由此得出两种不同的存储结 构:顺序存储结构和链式存储结构。 顺序存储结构:用数据元素在存储器中的相对位置 来表示数据元素之间的逻辑结构(

8、关系)。 链式存储结构:在每一个数据元素中增加一个存放 另一个元素地址的指针(pointer ),用该指针来表示 数据元素之间的逻辑结构(关系)。 例:设有数据集合A=3.0,2.3,5.0,-8.5,11.0 ,两种不同 的存储结构。 顺序结构:数据元素存放的地址是连续的; 链式结构:数据元素存放的地址是否连续没有要 求。 数据的逻辑结构和物理结构是密不可分的两个方面 ,一个算法的设计取决于所选定的逻辑结构,而算法的 实现依赖于所采用的存储结构。 在C语言中,用一维数组表示顺序存储结构;用结 构体类型表示链式存储结构。 数据结构的三个组成部分: 逻辑结构: 数据元素之间逻辑关系的描述 D_S

9、=(D,S) 存储结构: 数据元素在计算机中的存储及其逻辑 关系的表现称为数据的存储结构或物理结构。 数据操作: 对数据要进行的运算。 本课程中将要讨论的三种逻辑结构及其采用的存储 结构如图1-4所示。 数据的逻辑结构 非线性结构 集合图状结构 有向图无向图 树形结构 一般树二叉树 线性结构 一般线性表 线性表推广 广义表数组串 受限线性表 栈和队列 图1-5 数据逻辑结构层次关系图 图1-4 逻辑结构与所采用的存储结构 线性表 树 图 顺序存储结构 链式存储结构 复合存储结构 逻辑结构物理结构 数据类型(Data Type):指的是一个值的集合和定 义在该值集上的一组操作的总称。 数据类型是

10、和数据结构密切相关的一个概念。 在C 语言中数据类型有:基本类型和构造类型。 数据结构不同于数据类型,也不同于数据对象,它 不仅要描述数据类型的数据对象,而且要描述数据对象 各元素之间的相互关系。 1.1.5 数据类型 数据结构的主要运算包括: 建立(Create)一个数据结构; 消除(Destroy)一个数据结构; 从一个数据结构中删除(Delete)一个数据元素; 把一个数据元素插入(Insert)到一个数据结构中 ; 对一个数据结构进行访问(Access); 对一个数据结构(中的数据元素)进行修改 (Modify); 对一个数据结构进行排序(Sort); 对一个数据结构进行查找(Sear

11、ch)。 1.1.6 数据结构的运算 抽象数据类型(Abstract Data Type ,简称ADT):是 指一个数学模型以及定义在该模型上的一组操作。 ADT的定义仅是一组逻辑特性描述, 与其在计算 机内的表示和实现无关。因此,不论ADT的内部结构如 何变化,只要其数学特性不变,都不影响其外部使用。 ADT的形式化定义是三元组:ADT=(D,S,P) 其中:D是数据对象,S是D上的关系集,P是对D的基本 操作集。 1.2 抽象数据类型 ADT的一般定义形式是: ADT 数据对象: 数据关系: 基本操作: ADT 其中数据对象和数据关系的定义用伪码描述。 基本操作的定义是: () 初始条件:

12、 操作结果: 初始条件:描述操作执行之前数据结构和参数应 满足的条件;若不满足,则操作失败,返回相应的出 错信息。 操作结果:描述操作正常完成之后,数据结构的 变化状况和 应返回的结果。 1.3.1 算法 算法(Algorithm):是对特定问题求解方法(步骤)的一种 描述,是指令的有限序列,其中每一条指令表示一个或 多个操作。 算法具有以下五个特性 有穷性: 一个算法必须总是在执行有穷步之后结 束,且每一步都在有穷时间内完成。 确定性:算法中每一条指令必须有确切的含义。 不存在二义性。且算法只有一个入口和一个出口。 可行性: 一个算法是能行的。即算法描述的操作 都可以通过已经实现的基本运算执

13、行有限次来实现。 1.3 算法分析初步 输入: 一个算法有零个或多个输入,这些输入取 自于某个特定的对象集合。 输出: 一个算法有一个或多个输出,这些输出是 同输入有着某些特定关系的量。 一个算法可以用多种方法描述,主要有:使用自然 语言描述;使用形式语言描述;使用计算机程序设计语 言描述。 算法和程序是两个不同的概念。一个计算机程序是 对一个算法使用某种程序设计语言的具体实现。算法必 须可终止意味着不是所有的计算机程序都是算法。 在本门课程的学习、作业练习、上机实践等环节, 算法都用C语言来描述。在上机实践时,为了检查算法 是否正确,应编写成完整的C语言程序。 评价一个好的算法有以下几个标准

14、 正确性(Correctness ): 算法应满足具体问题的 需求。 可读性(Readability): 算法应容易供人阅读和交 流。可读性好的算法有助于对算法的理解和修改。 健壮性(Robustness): 算法应具有容错处理。当 输入非法或错误数据时,算法应能适当地作出反应 或进行处理,而不会产生莫名其妙的输出结果。 通用性(Generality): 算法应具有一般性 ,即算 法的处理结果对于一般的数据集合都成立。 1.3.2 算法设计的要求 算法执行时间需通过依据该算法编制的程序在计算 机上运行所消耗的时间来度量。其方法通常有两种: 事后统计:计算机内部进行执行时间和实际占用空间的 统计

15、。 问题:必须先运行依据算法编制的程序;依赖软硬 件环境,容易掩盖算法本身的优劣;没有实际价值。 事前分析:求出该算法的一个时间界限函数。 1.3.3 算法效率的度量 效率与存储量需求: 效率指的是算法执行的时间 ;存储量需求指算法执行过程中所需要的最大存储 空间。一般地,这两者与问题的规模有关。 与此相关的因素有: 依据算法选用何种策略; 问题的规模; 程序设计的语言; 编译程序所产生的机器代码的质量; 机器执行指令的速度; 撇开软硬件等有关部门因素,可以认为一个特定算 法“运行工作量”的大小,只依赖于问题的规模(通常用 n表示),或者说,它是问题规模的函数。 算法分析应用举例 算法中基本操

16、作重复执行的次数是问题规模n的某 个函数,其时间量度记作 T(n)=O(f(n),称作算法的渐 近时间复杂度(Asymptotic Time complexity),简称时间 复杂度。 一般地,常用最深层循环内的语句中的原操作的执 行频度(重复执行的次数)来表示。 “O”的定义: 若f(n)是正整数n的一个函数,则 O(f(n) 表示 M0 ,使得当n n0时,| f(n) | M | f(n0) | 。 表示时间复杂度的阶有: O(1) :常量时间阶 O (n):线性时间阶 O(n) :对数时间阶 O(nn) :线性对数时间阶 O (nk): k2 ,k次方时间阶 例 两个n阶方阵的乘法 for(i=1,ielem_a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号