已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,数据结构 Data Structure,西安工业大学计算机科学与工程学院,2,学时数:72 =64+8 学 分: 4.5 教 材:严蔚敏等,数据结构(C语言版),清华大学出版社(配题集) 参考书: 1 殷人昆等,数据结构(用面向对象方法与C+描述),清华大学出版社 2 殷人昆等,数据结构习题解析,清华大学出版社 3 李春保,数据结构习题与解析(C语言篇),清华大学出版社 4 姚群等,数据结构(C语言篇)导教.导学.导考,西北工业大学出版社,3,课前的话计算机系列课程之间的联系,4,程序=数据结构(加工对象)+算法(灵魂),数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科,5,数据结构课程的地位,是介于数学、计算机硬件和计算机软件三者之间的一门核心课程,关系,对象 关系 操作,对象 关系 操作,6,第1章 序 论,1.1 数据结构基本概念 1.2 抽象数据类型概念 1.3 算法效率的度量,作业,7,1.1 数据结构基本概念,Q1 什么是数据结构? Q2 学习数据结构有什么用? Q3 数据结构涵盖的主要内容?,讨论:,8,术语:数据、数据元素和数据项,(见教材P4定义): 数据(data)所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。 数据元素(data element)是数据的基本单位,具有完整确定的实际意义(又称元素、结点,顶点、记录等)。 数据项(Data item)构成数据元素的项目。是具有独立含义的最小标识单位(又称字段、域、属性 等)。,三者之间的关系:数据 数据元素 数据项,例:班级成绩单 个人成绩记录 姓名、学号,9,10,Q1:什么是数据结构?,答: (见教材P5) 是相互之间存在一种或多种特定关系的数据元素的集合,表示为:,(数值或非数值),Data_Structure=(D, S),元素有限集,关系有限集,11,P5 例1-4 复数定义: Complex=(C,R),说明: C:含两个实数的集合C1,C2 R=P P是定义在C上的一种关系, 序偶表示C1 是实部,C2是虚部。,12,Q2:学习数据结构有什么用?,答:计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。 这是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。,程序设计实质好算法好结构,同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。,13,1、数值 integer real float double 人口增长-数学模型:微分方程 梁架结构中的应力数学模型:线性方程组 2、非数值(不能用数学方程描述) 线性 树 图,14,例一:图书馆的书目检索自动化系统,书目文件,15,例二:计算机和人对弈问题,16,例三:多叉路口交通灯管理问题,17,Q3:数据结构涵盖的内容?,18,解释1: 什么叫数据的逻辑结构?,答:指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。逻辑结构可细分为4类:,集合结构: 仅同属一个集合 线性结构: 一对一(1:1) 树 结 构: 一对多(1:n) 图 结 构: 多对多 (m:n),非线性,线 性,19,在线性结构中,第一个结点 没有 前驱结点,其余每个结点有且只有 1个前驱结点;最后一个结点 没有 后续结点,其余每个结点有且只有1个后续结点。 在树形结构中,树根结点没有 前驱 结点,其余每个结点有且只有 1 个前驱结点;叶子结点没有 后续 结点,其余每个结点的后续结点数可以任意多个 。 在图形结构中,每个结点的前驱结点数和后续结点数可以任意多个。,练习:,20,例:用图形表示下列数据结构,并指出它 们是属于线性结构还是非线性结构。,(1) S=(D, R) D= a, b, c, d, e, f R=(a,e), (b,c), (c,a), (e,f), (f,d),解: 上述表达式可用图形表示为:,b c a e f d,此结构为线性的。,21,(2) S=(D, R) D=di | 1i5 R=(di , dj ), ij,d1 d5 d2 d4 d3,该结构是非线性的。,解:上述表达式可用图形表示为:,22,答:物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。 存储结构可分为4大类:,顺序、链式、索引、散列,解释2:什么叫数据的物理结构?,23,顺序映象:顺序存储结构 用元素在存储器中的相对位置表示数据元素之间的逻辑关系 非顺序映象:链式存储结构 用指针(指示元素存储地址)表示数据元素之间的逻辑关系,24,25,1536,元素2,1400,元素1,1346,元素3,元素4,1345,h,链式存储,h,26,例:(见教材P6)复数3.02.3i 的两种存储方式:,法1:地址 内容,法2:地址 内容,2字节,27,算法的设计取决于选定的逻辑结构。 算法的实现依赖于选定的存储结构。,逻辑结构、存储结构密切相关,28,解释3:什么是数据的运算?,答:在数据的逻辑结构上定义的操作算法。 它在数据的存储结构上实现。,最常用的数据运算有5种:,插入、删除、修改、查找、排序,29,1.2 抽象数据类型概念,Q1 数据类型与抽象数据类型 Q2 抽象数据类型如何定义? Q3 抽象数据类型如何表示和实现?,讨论:,提示:教材中P9例1-6和P11例1-7分别给出了抽象数据类型“三元组”的定义、表示和实现,请试阅读。,30,Q1 数据类型与抽象数据类型的区别?,数据类型:是一个值的集合和定义在该值上 的一组操作的总称。,抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的服务(或称操作),它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)。,31,数据类型 例:C语言中的整型 其内涵为一定范围的自然数集合, 及定义在该集合上的加减乘除及取模、比较大小操作。,32,Q2 抽象数据类型如何定义?,抽象数据类型可以用以下的三元组来表示: ADT = (D,S,P) 数据对象 D上的关系集 D上的操作集,ADT抽象数据类型名 数据对象: 数据关系: 基本操作 : ADT抽象数据类型名,ADT常用定义格式,33,基本操作: 基本操作名(参数表) 初始条件:初始条件描述 操作结果:操作结果描述,34,P9 抽象数据类型三元组的定义: ADT Triplet 数据对象:De1,e2,e3e1,e2,e3ElemSet 数据关系:R1 , 基本操作: InitTriplet( &T, v1, v2, v3 ) 操作结果:构造三元组T,元素e1,e2和e3分别被赋以参数v1,v2和 v3的值。 DestroyTriplet( &T ) 操作结果:三元组T被销毁。 Get( T, i, &e ) 初始条件:三元组T已存在,1i3。 操作结果:用e返回T的第i元的值。,35,Put( &T, i ,e ) 初始条件:三元组T已存在,1i3。 操作结果:改变T的第i元的值为e。 IsAscending( T ) 初始条件:三元组T已存在。 操作结果:如果T的三个元素按升序排列,则返回1,否则返回0。 IsDescending( T ) 初始条件:三元组T已存在。 操作结果:如果T的三个元素按降序排列,则返回1,否则返回0。 Max( T, &e ) 初始条件:三元组T已存在。 操作结果:用e返回T的三个元素中的最大值。,36,Min( T, &e ) 初始条件:三元组T已存在。 操作结果:用e返回T的三个元素中的最小值。 ADT Triplet,37,例:给出自然数(Natural Number )的抽象数据类型定义。,ADT Natural_Number objects: 一个整数的有序子集合,它开始于0,结束于机器能表示的最大整数 (MAX INT) functions: 对于所有的 x, y Natural_Number; TRUE, FALSE Boolean; +, -, , = = ,=等都是可用的服务。 Zero ( ): Natural Number 返回 0 IsZero(x): Boolean if (x=0) 返回TRUE else 返回 FALSE Add(x, y): Natural Number if (x+y = MAX INT)返回 x+y else 返回MAX INT Subtract(x,y): Natural Number if (xy)返回0 else 返回x-y Equal(x,y): Boolean if (x= y)返回TRUE else 返回FALSE Successor(x) : Natural Number if (x = MAX INT)返回x else 返回x+1 Natural_Number,38,Q3 抽象数据类型如何表示和实现?,抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现。,注1 :它有些类似C语言中的结构(struct)类型,但增加了相关的服务。 注2 :教材中用的是类C语言(介于伪码和C语言之间)作为描述工具。其描述语法见P10-11。,但上机时要用具体语言实现,如C或C+等,39,P12 抽象数据类型Triplet 的表示和实现 /采用动态分配的顺序存储结构 typedef ElemType *Triplet /-基本操作的函数原型说明 Status InitTriplet(Triplet /InitTriplet,40,1.3 算法效率的度量,一、 什么是算法?如何评判一个算法的好坏? 二、算法效率的度量 时间复杂度和空间复杂度如何表示? 三、 计算举例,讨论:,41,程序设计实质好算法好结构,答:算法是解决某一特定类型问题的有限运算序列。是一系列输入转换为输出的计算步骤。,常用时间复杂度来衡量,一、 什么是算法?如何评判一个算法的好坏?,1、算法有5个基本特性:,算法评价有4个指标:,有穷性、确定性、可行性、输入和输出,运行时间、占用空间、正确性和简单性,常用空间复杂度来衡量,42,有穷性。一个算法必须在有穷步之后结束,即必须在有限时间内完成。 确定性。算法的每一步必须有确切的定义,无二义性。算法的执行对应着的相同的输入仅有唯一的一条路经。 可行性。算法中的每一步都可以通过已经实现的基本运算的有限次执行得以实现。 输入。一个算法具有零个或多个输入,这些输入取自特定的数据对象集合。 输出。一个算法具有一个或多个输出,这些输出同输入之间存在某种特定的关系。,43,2、算法设计要求 正确性:算法的执行结果应当满足预先规定的功能和性能要求 1、程序不含语法错误 2、对于几组数据能得出满足规格说明要求的结果 3、对于几组典型、苛刻、刁难的数据能得出满足规格说明要求的结果 4、对于一切合法数据能得出满足规格说明要求的结果 可读性:一个算法应当思路清晰、层次分明、简单明了、易读易懂 健壮性:当输入不合法数据时,应能作适当处理,不至引起严重后果 高效:有效使用存储空间和有较高的时间效率,44,常用时间复杂度来衡量,3、算法评价有4个指标:,运行时间、占用空间、正确性和简单性,常用空间复杂度来衡量,45,3.1 时间复杂度的衡量: 一、事后统计法 缺点: 1。必须执行程序 2其它因素掩盖算法本质,二、事前分析估算法 和算法执行时间相关的因素: 1算法选用的策略 2问题的规模 3编写程序的语言 4编译程序产生的机器代码的质量 5计算机执行指令的速度,46,一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。,时间复杂度T(n)=O(f(n) n:问题规模; f(n):问题规模的函数 T(n)随问题规模n的增大,算法执行时间T(n)的增长率和f(n)的增长率相同 P16 图1-7常见函数增长率,47,时间复杂度T(n)按数量级递增顺序为:,注1 O()为渐近符号。 注2 空间复杂度S(n)按数量级递增顺序也与上表类同。,复杂度高,复杂度低,48,渐进符号(O)的定义:f(n)是正整数n的一个函数,则xn=O(f(n)表示存在一个正整数M,使得当 n n0 ,都满足|xn| M|f(n)|,3n+2=O(n) /* 3n+24n for n2 */ 3n+3=O(n) /* 3n+34n for n3 */ 100n+6=O(n) /* 100n+6101n for n10 */ 10n2+4n+2=O(n2) /* 10n2+4n+211n2 for n5 */ 6*2n+n2=O(2n) /* 6*2n+n2 7*2n for n4 */,例:,49,1. +x;s=0; 2. for (i=1;j=n;+i) +x;s+=x; 3. for (j=1;j=n;+j) for (k=1;k=n;+k) +x;s+=x; +x语句频度 时间复杂度: 1. 1 O(1) 2. n O(n) 3. n2 O(n2),算法的时间复杂度是由嵌套最深层语句的频度决定的。,50,例:分析以下程序段的时间复杂度。,i=1; while(i=n) i=i*2; ,该算法的运行时间由程序中所有语句的频度(即该语句重复执行的次数)之和构成。,解:,分析:显然,语句的频度是1。设语句2的频度是f(n),则有:,即f(n)log2n,取最大值f(n)=log2n,所以该程序段的时间复杂度T(n)=1+f(n)=1+ log2n= O( log2n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔科牙周炎处理流程
- 预防医学科疫苗接种指导原则规范指南
- 立足本职岗位践行爱国奋斗精神
- 大学生自我生涯规划
- 2025年高级会计师之高级会计实务题库附答案(典型题)
- 关于成立项目部应急管理领导小组的通知范文
- 重庆市建筑施工企业安全员c3证考试题库
- 2025合作共赢合同模板
- 2025【经纪人公司与歌手签约合同范本】
- 2025数据处理与保密协议合同书
- 2025年高级摄影师题库及答案
- 2025年大学《园林-园林植物栽培与养护》考试备考题库及答案解析
- 2026年保温杯的市场调研报告
- 学校教学楼模块化快速施工方案
- 2025年广东省湛江市三年级语文上册期中考试试卷及答案
- 2025美国心脏协会心肺复苏(CPR)与心血管急救(ECC)指南解读课件
- 证监会证券市场客户资金监控系统商业银行接口
- 工业建筑的电气设计
- 2022年山东省高中物理合格考真题
- 政府预算理论与实务(第四版)全套教学课件
- 静脉输液和用药安全
评论
0/150
提交评论