数据结构与算法 教学课件 作者 王曙燕 chapter1 引论.ppt
《数据结构与算法 教学课件 作者 王曙燕 chapter1 引论.ppt》由会员分享,可在线阅读,更多相关《数据结构与算法 教学课件 作者 王曙燕 chapter1 引论.ppt(51页珍藏版)》请在冰豆网上搜索。
1,西安邮电大学计算机学院,联系方式:
数据结构与算法,王曙燕教授,2,数据结构,计算机的应用涉及到的更多的是非数值计算的问题。
即计算机处理的对象是纯粹的数值以外的表格、图像、声音等各种具有一定结构的数据。
计算机应用系统中的两个关键问题:
1.表示:
对象及其关系在计算机中的表示。
只有对象及其相互关系已存储在计算机中,才能被进一步处理;,2.操作:
对对象进行处理,访问。
3,数据结构,例如:
Exp1.超市商品管理,对商品的各种信息如何加以组织和存储,数据对象:
商品,w3,w5,w2,w4,w1,关系:
线性,数据结构与算法,4,数据结构,Exp2.计算机对弈,对棋盘中存在的状态如何加以组织和存储,假设先走棋,数据对象:
棋盘格局关系:
树状,5,数据结构,Exp3.五叉路口的交通灯控制问题,对交通中的通路状态如何加以组织和存储,数据对象:
通路状态,AB,BD,BC,BA,DC,DB,DA,ED,EC,AC,EB,EA,AD,关系:
图状/网状,图的染色问题,6,数据结构,概括:
为在计算机上解决具体问题,应如何对所需的数据/信息及其关系进行组织,以及如何对它们进行基本操作。
简言之,就是研究数据的组织方式(结构)及相应的抽象操作。
7,第1章引论,1.1数据结构的概念,1.2数据结构的内容,1.3算法,8,第1章引论,1.1数据结构的概念,相关名词:
数据(Data),数据元素(DataElement),数据对象(DataObject),数据结构(DataStructure),数据类型(DataType),数据抽象与抽象数据类型,9,相关名词:
数据(Data):
数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。
数据包含整型、实型、布尔型、图象、字符、声音等一切可以输入到计算机中的符号集合。
例如:
对C源程序,C编译程序,源程序(.c),目标程序(.obj),可执行程序(.exe),C链接程序,第1章引论,1.1数据结构的概念,10,相关名词:
数据元素(DataElement):
数据元素,数据项,一个数据元素可由一个或多个数据项(DataItem)组成,数据项是有独立含义的最小单位。
记录,第1章引论,1.1数据结构的概念,数据结构与算法,11,相关名词:
数据对象(DataObject):
数据对象是性质相同的数据元素的集合,是数据的一个子集。
例如:
整数集合:
N=0,1,2,无限集,字符集合:
C=A,B,Z有限集,第1章引论,1.1数据结构的概念,12,相关名词:
数据结构(DataStructure):
例如:
表结构,第1章引论,1.1数据结构的概念,13,相关名词:
数据结构(DataStructure):
例如:
数据结构与算法,第1章引论,1.1数据结构的概念,14,相关名词:
数据类型(DataType):
例如:
在高级语言中,整型类型的取值范围为:
-32768+32767,运算符集合为加、减、乘、除、取模,即+、-、*、/、%。
数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。
原子类型:
其值不可分解。
如C语言中的标准类型(整型、实型、字符型)。
结构类型:
指针类型属于哪种类型?
第1章引论,1.1数据结构的概念,15,相关名词:
数据抽象与抽象数据类型,数据的抽象,抽象数据类型(AbstractDataType),抽象数据类型实现,ADT的表示与实现,面向对象的概念,结构化的开发方法与面向对象开发方法不同点,第1章引论,1.1数据结构的概念,16,相关名词:
数据抽象与抽象数据类型,数据的抽象,汇编语言中十进制表示的数据98.65、9.6E3等,它们是二进制数据的抽象;,高级语言中,给出更高一级的数据抽象,如整型、实型、字符型等,还可以进一步定义更高级的数据抽象,如各种表、队、栈、树、图、窗口、管理器等复杂的抽象数据类型。
第1章引论,1.1数据结构的概念,17,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType):
一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。
用抽象数据类型的概念来指导问题的求解过程:
数据结构与算法,第1章引论,1.1数据结构的概念,18,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),例如:
线性表的抽象数据类型的描述:
ADTLinear_list数据元素所有ai属于同一数据对象,i=1,2,nn0;逻辑结构所有数据元素ai(i=1,2,n-1)存在次序关系,a1无前趋,an无后继;操作设L为Linear_listInitial(L):
初始化空线性表;Length(L):
求线性表的表长;Get(L,i):
取线性表的第i个元素;Insert(L,i,b):
在线性表的第i个位置插入元素b;Delete(L,i):
删除线性表的第i个元素;ADTLinear_list,第1章引论,1.1数据结构的概念,19,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),实现的三种方法:
传统的面向过程的程序设计,“包”、“模型”的设计方法,面向对象的程序设计(ObjectOrientedProgramming,简称OOP),第1章引论,1.1数据结构的概念,20,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),ADT的定义:
ADT数据对象:
结构关系:
基本操作:
ADT,基本操作的定义格式为:
(参数表)操作前提:
操作结果:
第1章引论,1.1数据结构的概念,21,第1章绪论,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),关于参数传递:
参数表中的参数有值参和变参两种。
用标准C语言表示和实现ADT描述时,主要有两个方面:
通过结构体将int、float等固有类型组合到一起,构成一个结构类型,再用typedef为该类型或该类型指针重新起一个名字。
用C语言函数实现各操作。
1.1数据结构的概念,22,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),例如,抽象数据类型复数的定义:
ADTComplex数据对象:
De1,e2e1,e2RealSet数据关系:
R1|e1是复数的实数部分|e2是复数的虚数部分基本操作:
AssignComplex(&Z,v1,v2)操作结果:
构造复数Z,其实部和虚部分别被赋以参数v1和v2的值。
DestroyComplex(&Z)操作结果:
复数Z被销毁。
Add(z1,z2,&sum)初始条件:
z1,z2是复数。
操作结果:
用sum返回两个复数z1,z2的和值。
ADTComplex,假设:
z1和z2是上述定义的复数,则Add(z1,z2,z3)操作的结果,即为用户企求的结果z3=z1+z2,第1章引论,1.1数据结构的概念,23,相关名词:
数据抽象与抽象数据类型,抽象数据类型(AbstractDataType),ADT有两个重要特征:
数据抽象:
数据封装:
将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。
第1章引论,1.1数据结构的概念,24,数据结构,相关名词:
结构化与面向对象开发方法的不同点,结构化的开发方法:
面向对象的开发方法:
首先着眼于应用问题所涉及的对象,包括对象、对象属性和要求的操作,从而建立对象结构和为解决问题需要执行的时间序列。
是面向过程的开发方法,首先着眼于系统要实现的功能。
返回,第1章引论,1.1数据结构的概念,25,第1章引论,1.2数据结构的内容,逻辑结构,存储结构,运算集合,26,第1章引论,1.2数据结构的内容,逻辑结构:
指数据元素之间逻辑关系描述。
形式化描述:
Data_Structure=(D,R)其中D是数据元素的有限集,R是D上关系的有限集。
四类基本的结构集合结构、线性结构、树型结构、图状结构。
27,第1章引论,1.2数据结构的内容,逻辑结构,集合结构:
结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。
28,第1章引论,1.2数据结构的内容,逻辑结构,线性结构:
结构中的数据元素之间存在着一对一的线性关系。
29,第1章引论,1.2数据结构的内容,逻辑结构,树型结构:
结构中的数据元素之间存在着一对多的层次关系。
30,第1章引论,1.2数据结构的内容,逻辑结构,图状结构或网状结构:
结构中的数据元素之间存在着多对多的任意关系。
31,第1章引论,1.2数据结构的内容,逻辑结构,32,第1章引论,1.2数据结构的内容,存储结构:
逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。
是数据结构的实现;是数据结构的抽象。
数据元素之间关系在计算机中的表示方法:
顺序映象(顺序存储结构),非顺序映象(非顺序存储结构),33,第1章引论,1.2数据结构的内容,运算集合,例如:
计科0904班学生信息表,数据结构与算法,34,第1章引论,1.2数据结构的内容,可归纳为三个部分,即逻辑结构、存储结构和运算集合。
按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机存贮器中,并在这些数据上定义了一个运算的集合,就叫做数据结构。
返回,35,第1章引论,1.3算法,算法(Algorithm)定义,算法的特性,算法设计的要求,36,Algorithmisafinitesetofruleswhichgivesasequenceofoperationforsolvingaspecifictypeofproblem.,算法是规则的有限集合,是为解决特定问题而规定的一系列操作。
算法定义:
第1章引论,1.3算法,37,算法特性:
有限性:
有限步骤之内正常结束,不能形成无穷循环;,确定性:
算法中的每一个步骤必须有确定含义,无二义性得以实现;,输入:
有多个或0个输入;,输出:
至少有一个或多个输出;,可行性:
原则上能精确进行,操作可通过已实现基本运算执行有限次而完成。
第1章引论,1.3算法,38,设计的要求:
正确性,可读性,健壮性,高效率和低存储量,例如:
要求n个数的最大值问题,算法如下:
max=0;for(i=1;imax)max=x;,返回,第1章引论,1.3算法,39,算法、语言、程序的关系,设计实现算法过程步骤,类描述算法的语言选择,第1章引论,1.3算法,40,算法、语言、程序的关系,算法:
描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。
描述算法的工具:
算法可用自然语言、框图或高级程序设计语言进行描述。
程序:
是算法在计算机中的实现。
第1章引论,1.3算法,41,设计实现算法的步骤:
找出与求解有关的数据元素之间的关系;,考虑数据元素的存储表示;,确定在某一数据对象上所施加运算;,选择描述算法的语言;,设计实现求解的算法,并用程序语言加以描述。
第1章引论,1.3算法,42,类描述算法的语言选择,类语言:
类语言是接近于高级语言而又不是严格的高级语言,具有高级语言的一般语句设施,撇掉语言中的细节,以便把注意力主要集中在算法处理步骤本身的描述上。
返回,第1章引论,1.3算法,43,评价算法的标准:
评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代