1、学时数学时数:48(3216)学学 分分:3 教教 材:材:严蔚敏严蔚敏等,数据结构(等,数据结构(C语言版),清华大语言版),清华大学出版社,学出版社,1997年年4月月(配题集配题集)参考书:参考书:1 殷人昆等,殷人昆等,数据结构(用面向对象方法与数据结构(用面向对象方法与C+描述),清华大学出版社,描述),清华大学出版社,1999年年7月。¥月。¥26 2 殷人昆等,殷人昆等,数据结构习题解析,清华大学出版社,数据结构习题解析,清华大学出版社,2002年年4月。¥月。¥263 李春保,李春保,数据结构习题与解析(数据结构习题与解析(C语言篇),清语言篇),清华大学出版社,华大学出版社,
2、2001年年1月。¥月。¥284 丁宝康等,丁宝康等,数据结构自学考试指导,清华大学出数据结构自学考试指导,清华大学出版社,版社,2001年年5月。¥月。¥23内内 容容 安安 排排章内 容 学时 章 内 容 学时 1绪 论27图62线性表48动态存储管理略3栈和队列69查找44串(自学)210内部排序45数组和广义表(自学)411外部排序略6树和二叉树 612文件略实验:课内上机(实验:课内上机(16规定内容)规定内容)+课外上机(课外上机(24平时作平时作业中编程题验证)业中编程题验证)课课前前的的话话计计算算机机系系列列课课程程之之间间的的联联系系 计算机概论与上机操作(对 21 世纪公
3、民要求)程序设计与算法语言(BASIC FORTRAN PASCAL C 等,怎样使用计算机)计算机组成原理(所有计算机的共性)微机原理及应用(特定机型介绍,单片机或 8086 PC 机,怎样应用计算机)控制之路 数据处理之路 汇编语言程序设计 数数据据结结构构 单片机技术/微机接口 操作系统 软软件件技技术术基基础础 数据库理论 计算机网络 软件工程 应用系统设计 计算机网络 针对针对非数值计算非数值计算的程序设计问题,研究计算机的程序设计问题,研究计算机的的操作对象操作对象以及它们之间的以及它们之间的关系关系和和操作操作。是介于是介于数学、计算机硬件和计算机软件数学、计算机硬件和计算机软件
4、三三者之间的一门核心课程。者之间的一门核心课程。关系对象关系操作数学软件硬件对象关系操作Data_Structure=(D,R)第第1 1章绪论章绪论讨论讨论5 5个问题:个问题:1.1 1.1 什么是数据结构什么是数据结构是是相互之间存在一种或多种特定关系的数据元素的集合,表示为:(数值或非数值数值或非数值)Data_Structure=(D,R)是指同一数据元素类型中各元素之间存在的关系。是指同一数据元素类型中各元素之间存在的关系。元素有限集元素有限集关系有限集关系有限集【数据数据】(Data(Data)是对信息的一种符号表示。能被计算机输入、存储、处理和输出的一是对信息的一种符号表示。能
5、被计算机输入、存储、处理和输出的一切信息切信息【数据元素数据元素】(Data Element(Data Element)是数据的基本单位,在计算机程序中通常作为一个整体是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。它是数据整体中相对独立的单位进行考虑和处理。它是数据整体中相对独立的单位,也称节点(也称节点(nodenode)或记录()或记录(recordrecord)【数据项数据项】一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位位,也称域也称域(field)(field)。【数据对象数据对象】
6、(Data Object)(Data Object)是性质相同的数据元素的集合。是数据的一个子集。是性质相同的数据元素的集合。是数据的一个子集。【数据记录数据记录】组织数据的基本单位组织数据的基本单位 【数据结构数据结构】(Data Structure)(Data Structure)数据及其相互之间的关系数据及其相互之间的关系 【数据类型数据类型】指数据的取值范围和允许施加的操作指数据的取值范围和允许施加的操作简单类型简单类型结构类型结构类型【抽象数据类型抽象数据类型】指一个数学模型以及定义在该模型上的一组操作指一个数学模型以及定义在该模型上的一组操作【逻辑结构逻辑结构】数据之间的相互联系,
7、通常分为四类基本结构:】数据之间的相互联系,通常分为四类基本结构:集合结构集合结构:线性结构线性结构:树结构树结构:图图(或网状或网状)结构结构:【存储结构存储结构/物理结构物理结构】一种数据结构在存储器中的存储方式】一种数据结构在存储器中的存储方式顺序、链接、索引、散列顺序、链接、索引、散列001高等数学樊映川S01002理论力学罗远祥L01003高等数学华罗庚S01004线性代数栾汝书S02高等数学001,003理论力学002,.线性代数004,.樊映川001,华罗庚002,.栾汝书004,.L002,S001,003,树.CEDAB图1.2 1.2 学习数据结构的意义学习数据结构的意义计
8、算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。数据结构是一门学科,针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作等等。同样的数据对象,用不同的数据结构来表同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。示,运算效率可能有明显的差异。1.3 1.3 数据结构涵盖的内容数据结构涵盖的内容集合结构:集合结构:仅同属一个集合仅同属一个集合线性结构线性结构:一对一(一对一(1:1)树树 结结 构构:一对多(一对多(1:n)图图 结结 构构:多对多多对多 (m:n)非线性非线性线线 性性逻辑结构可细分为逻辑结构可细分为4 4类:类
9、:答:指数据元素之间的逻辑关系。即从逻辑关系上描述答:指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它数据,它与数据的存储无关与数据的存储无关,是,是独立于计算机独立于计算机的。的。解释解释1:什么叫数据的逻辑结构?什么叫数据的逻辑结构?(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此结构为此结构为线性线性的。的。例:例:用图形表示下列数据结构,并指出它们是属于线用图形表示下列数据结构,并指出它们是属于线性结构还是非线性结构。性结构还是非线性结构
10、。d1 d5 d2 d4 d3该结构该结构是非线性是非线性的。的。解:解:上述表达式可用图形表示为:上述表达式可用图形表示为:(2)S=(D,R)D=di|1i5 R=(di,dj),ij答:物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。存储结构可分为存储结构可分为4大类:大类:例:例:复数复数3.02.3i 的两种存储方式:的两种存储方式:顺序、链式、索引、散列顺序、链式、索引、散列2.303023.00300041503023.0030004152.3法法1:地址地址 内容内容法法2:地址地址 内容内容2字节字节解释解释2 2:什么叫数据的物理结构
11、?:什么叫数据的物理结构?答:在数据的逻辑结构上定义的操作算法。它在数据的存储结构上实现。最常用的数据运算有最常用的数据运算有 5 种:种:插入、删除、修改、查找、排序插入、删除、修改、查找、排序解释解释3 3:什么是数据的运算?:什么是数据的运算?1.4.1 数据类型与抽象数据类型的区别?数据类型与抽象数据类型的区别?1.4.2 抽象数据类型如何定义?抽象数据类型如何定义?1.4.3 抽象数据类型如何表示和实现?抽象数据类型如何表示和实现?讨论:讨论:抽象数据类型抽象数据类型和和伪码伪码是学习数据结构的工具是学习数据结构的工具1.4.1 数据类型与抽象数据类型的区别数据类型与抽象数据类型的区
12、别数据类型:数据类型:是一个是一个值的集合值的集合和定义在该值上的和定义在该值上的一组操作一组操作的总称。的总称。抽象数据类型:抽象数据类型:由由用户定义用户定义,用以表示应用问题的数,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关据模型。它由基本的数据类型构成,并包括一组相关的的服务服务(或称操作)(或称操作)它与数据类型实质上是一个概念,但其特征是它与数据类型实质上是一个概念,但其特征是使用使用与与实现分离实现分离,实行,实行封装封装和和信息隐蔽信息隐蔽(独立于计算机)(独立于计算机)1.4.2 抽象数据类型如何定义抽象数据类型如何定义抽象数据类型抽象数据类型可以用以下
13、的三元组来表示:可以用以下的三元组来表示:ADT=ADT=(D D,R R,P P)ADTADT抽象数据类型名抽象数据类型名 数据数据对象对象:数据数据关系关系:基本基本操作操作 :ADT ADT抽象数据类型抽象数据类型名名ADT常用常用定义定义格式格式数据对象数据对象D D上的关系集上的关系集D D上的操作集上的操作集例:给出自然数(Natural Number)的抽象数据类型定义。ADT Natural_Number isobjects:一个整数的有序子集合,它开始于0,结束于机器能表示的最大整数(MAX INT)functions:对于所有的 x,y Natural_Number;TRU
14、E,FALSE Boolean;+,-,=,=等都是可用的服务。Zero()Zero():Natural Number Natural Number 返回返回 0 0IsZero(x)IsZero(x):Boolean if(x=0)Boolean if(x=0)返回返回TRUETRUE else else 返回返回 FALSEFALSEAdd(x,y)Add(x,y):Natural Number Natural Number if(x+y=MAX INT)if(x+y=MAX INT)返回返回 x+yx+y else else 返回返回 MAX INTMAX INTSubtract(x,y
15、):Natural NumberNatural Number if(xy)返回返回0 else 返回返回x-yEqual(x,y):Boolean Equal(x,y):Boolean if(x=y)if(x=y)返回返回TRUE else TRUE else 返回返回FALSEFALSESuccessor(x):Natural NumberNatural Number if(x=MAX INT)返回返回x else 返回返回x+1end Natural_Number 1.4.3 1.4.3 抽象数据类型如何表示和实现抽象数据类型如何表示和实现 抽象数据类型可以通过固有的数据类型(如整型、实型
16、、字符型等)来表示和实现。注注1 1 :它有些类似:它有些类似C C语言中的语言中的结构(结构(struct)struct)类型类型,但,但增加了相关的增加了相关的服务服务。注注2 2 :教材中用:教材中用类类C C语言(介于伪码和语言(介于伪码和C C语言之间)作语言之间)作为描述工具。其描述语法汇总在教材为描述工具。其描述语法汇总在教材P10-11P10-11上。上。但上机时要用具体语言实现,如但上机时要用具体语言实现,如C C或或C+C+等等提示:提示:教材中教材中例例1-61-6和例和例1-71-7分别给出了抽象数据类型分别给出了抽象数据类型“三元组三元组”的定义、表示和实现,请自己先
17、试的定义、表示和实现,请自己先试读一遍。读一遍。当课程内容学习到当课程内容学习到50%50%以后,你再回头看这个例以后,你再回头看这个例子,会发现自己已能完全看懂了!子,会发现自己已能完全看懂了!1.5.1 什么是算法?如何评判算法的好坏?1.5.2 时间复杂度和空间复杂度如何表示?1.5.3 计算举例讨论:讨论:1.5.1 1.5.1 什么是算法?如何评判一个算法的好坏?什么是算法?如何评判一个算法的好坏?常用常用时间复杂度时间复杂度来衡量来衡量算法的基本特性:算法的基本特性:算法评价指标:算法评价指标:有穷性、确定性、可行性、有穷性、确定性、可行性、必有必有输出输出正确性、可读性、健壮性、
18、正确性、可读性、健壮性、效率效率与与低存储量低存储量需求需求常用常用空间复杂度空间复杂度来衡量来衡量程序设计的实质:好算法好结构程序设计的实质:好算法好结构算法算法是对特定问题求解步骤的一种描述,它是指令的是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。有限序列,是一系列输入转换为输出的计算步骤。4 4个层次个层次时间复杂度时间复杂度T(n)或空间复杂度或空间复杂度S(n)按数量级递增顺序为按数量级递增顺序为:复杂度高复杂度高复杂度低复杂度低200log200log2 2n n1.5.2 1.5.2 时间复杂度和空间复杂度如何表示?时间复杂度和空间复杂度如
19、何表示?3n+2=O(n)因为 3n+24n for n26*2n+n2=O(2n)因为6*2n+n2 7*2n for n4例:例:渐进符号渐进符号(O)的定义:)的定义:当且仅当存在一个正的常当且仅当存在一个正的常数数 C C,使得对所有的,使得对所有的 n n n n0 0 ,有,有 f(n)f(n)Cg(n)Cg(n),则:则:f(n)=f(n)=O O(g(n)(g(n)1.5.3 1.5.3 计算举例计算举例该算法的运行时间由程序中所有语句的该算法的运行时间由程序中所有语句的频度频度(即该语(即该语句重复执行的次数)句重复执行的次数)之和之和构成。构成。解:解:分析:分析:显然,语
20、句显然,语句的频度是的频度是1。设语句。设语句2的频度是的频度是f(n),则有:,则有:算法的时间复杂度由算法的时间复杂度由嵌套最深层语句的频度嵌套最深层语句的频度决定决定例:例:分析以下程序段的时间复杂度。分析以下程序段的时间复杂度。i=1;while(i=n)i=i*2;即即f(n)log2n,取最大值取最大值f(n)=log2n所以该程序段的时间复杂度所以该程序段的时间复杂度T(n)=1+f(n)=1+log2n=O(log2n)()2f nn本章小结本章小结数据结构课程 数据结构算法程序,涉及数学、计算机硬件和软件。数据结构定义指互相有关联的数据元素的集合,可用data_Structure=(D,R)表示。数据结构内容数据的逻辑结构、存储结构和基本运算 数据结构学习工具抽象数据类型和伪码(类C)算法效率指标时间效率和空间效率 第第1章结束章结束作业:习题习题1