1、图状/网状,图的染色问题,6,数据结构,概括:,为在计算机上解决具体问题,应如何对所需的数据/信息及其关系进行组织,以及如何对它们进行基本操作。,简言之,就是研究数据的组织方式(结构)及相应的抽象操作。,7,第 1 章 引论,1.1 数据结构的概念,1.2 数据结构的内容,1.3 算法,8,第 1 章 引论,1.1 数据结构的概念,相关名词:,数据(Data),数据元素(Data Element),数据对象(Data Object),数据结构(Data Structure),数据类型(Data Type),数据抽象与抽象数据类型,9,相关名词:,数据(Data):,数据是描述客观事物的数值、字
2、符以及能输入机器且能被处理的各种符号集合。,数据包含整型、实型、布尔型、图象、字符、声音 等一切可以输入到计算机中的符号集合。,例如:对C源程序,C编译程序,源程序(.c),目标程序(.obj),可执行程序(.exe),C链接程序,第 1 章 引论,1.1 数据结构的概念,10,相关名词:,数据元素(Data Element):,数据元素,数据项,一个数据元素可由一个或多个数据项(Data Item)组成,数据项是有独立含义的最小单位。,记录,第 1 章 引论,1.1 数据结构的概念,数 据 结 构 与 算 法,11,相关名词:,数据对象(Data Object):,数据对象是性质相同的数据元
3、素的集合,是数据的一个子集。,整数集合:N=0,1,2,无限集,字符集合:C=A,B,Z 有限集,第 1 章 引论,1.1 数据结构的概念,12,相关名词:,数据结构(Data Structure):,表结构,第 1 章 引论,1.1 数据结构的概念,13,相关名词:,数 据 结 构 与 算 法,第 1 章 引论,1.1 数据结构的概念,14,相关名词:,数据类型(Data Type):,在高级语言中,整型类型的取值范围为:-32768+32767,运算符集合为加、减、乘、除、取模,即+、-、*、/、%。,数据类型是一组性质相同的值集合以及定义在这个值集合上的一组操作的总称。,原子类型:,其值
4、不可分解。如C语言中的标准类型(整型、实型、字符型)。,结构类型:,指针类型属于哪种类型?,第 1 章 引论,1.1 数据结构的概念,15,相关名词:,数据抽象与抽象数据类型,数据的抽象,抽象数据类型(Abstract Data Type),抽象数据类型实现,ADT的表示与实现,面向对象的概念,结构化的开发方法与面向对象开发方法不同点,第 1 章 引论,1.1 数据结构的概念,16,相关名词:,数据抽象与抽象数据类型,数据的抽象,汇编语言中十进制表示的数据98.65、9.6E3等,它们是二进制数据的抽象;,高级语言中,给出更高一级的数据抽象,如整型、实型、字符型等,还可以进一步定义更高级的数据
5、抽象,如各种表、队、栈、树、图、窗口、管理器等复杂的抽象数据类型。,第 1 章 引论,1.1 数据结构的概念,17,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type):,一个抽象数据类型确定了一个模型,但将模型的实现细节隐藏起来;它定义了一组运算,但将运算的实现过程隐藏起来。,用抽象数据类型的概念来指导问题的求解过程:,数 据 结 构 与 算 法,第 1 章 引论,1.1 数据结构的概念,18,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),例如:线性表的抽象数据类型的描述:,ADT Linear_list数据元素
6、 所有ai属于同一数据对象,i=1,2,n n0;逻辑结构 所有数据元素ai(i=1,2,n-1)存在次序关系,a1无前趋,an无后继;操作 设L为Linear_list Initial(L):初始化空线性表;Length(L):求线性表的表长;Get(L,i):取线性表的第i个元素;Insert(L,i,b):在线性表的第i个位置插入元素b;Delete(L,i):删除线性表的第i个元素;ADT Linear_list,第 1 章 引论,1.1 数据结构的概念,19,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),实现的三种方法:,传统的面向过程的程
7、序设计,“包”、“模型”的设计方法,面向对象的程序设计(Object Oriented Programming,简称OOP),第 1 章 引论,1.1 数据结构的概念,20,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),ADT的定义:,ADT 数据对象:结构关系:基本操作:ADT,基本操作的定义格式为:,(参数表)操作前提:操作结果:,第 1 章 引论,1.1 数据结构的概念,21,第 1 章 绪论,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),关于参数传递:,参数表中的参数有值参和变参两种。,用标准C语言
8、表示和实现ADT描述时,主要有两个方面:,通过结构体将int、float等固有类型组合到一起,构成一个结 构类型,再用typedef为该类型或该类型指针重新起一个名字。,用C语言函数实现各操作。,1.1 数据结构的概念,22,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),例如,抽象数据类型复数的定义:,ADT Complex 数据对象:De1,e2e1,e2RealSet 数据关系:R1|e1是复数的实数部分|e2 是复数的虚数部分 基本操作:AssignComplex(&Z,v1,v2)操作结果:构造复数 Z,其实部和虚部分别被赋以参数 v1 和
9、v2 的值。DestroyComplex(&Z)操作结果:复数Z被销毁。Add(z1,z2,&sum)初始条件:z1,z2是复数。操作结果:用sum返回两个复数z1,z2 的和值。ADT Complex,假设:z1和z2是上述定义的复数,则 Add(z1,z2,z3)操作的结果,即为用户企求的结果z3=z1+z2,第 1 章 引论,1.1 数据结构的概念,23,相关名词:,数据抽象与抽象数据类型,抽象数据类型(Abstract Data Type),ADT 有两个重要特征:,数据抽象:,数据封装:,将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节。,第 1 章 引论,1.
10、1 数据结构的概念,24,数 据 结 构,相关名词:,结构化与面向对象开发方法的不同点,结构化的开发方法:,面向对象的开发方法:,首先着眼于应用问题所涉及的对象,包括对象、对象属性和要求的操作,从而建立对象结构和为解决问题需要执行的时间序列。,是面向过程的开发方法,首先着眼于系统要实现的功能。,返回,第 1 章 引论,1.1 数据结构的概念,25,第 1 章 引论,1.2 数据结构的内容,逻辑结构,存储结构,运算集合,26,第 1 章 引论,1.2 数据结构的内容,逻辑结构:,指数据元素之间逻辑关系描述。,形式化描述:Data_Structure=(D,R)其中D是数据元素的有限集,R是D上关
11、系的有限集。,四类基本的结构集合结构、线性结构、树型结构、图状结构。,27,第 1 章 引论,1.2 数据结构的内容,逻辑结构,集合结构:,结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。,28,第 1 章 引论,1.2 数据结构的内容,逻辑结构,线性结构:,结构中的数据元素之间存在着一对一的线性关系。,29,第 1 章 引论,1.2 数据结构的内容,逻辑结构,树型结构:,结构中的数据元素之间存在着一对多的层次关系。,30,第 1 章 引论,1.2 数据结构的内容,逻辑结构,图状结构或网状结构:,结构中的数据元素之间存在着多对多的任意关系。,31,第 1 章 引论,1.2 数据
12、结构的内容,逻辑结构,32,第 1 章 引论,1.2 数据结构的内容,存储结构:,逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和关系的表示。,是数据结构的实现;是数据结构的抽象。,数据元素之间关系在计算机中的表示方法:,顺序映象(顺序存储结构),非顺序映象(非顺序存储结构),33,第 1 章 引论,1.2 数据结构的内容,运算集合,例如:计科0904班学生信息表,数 据 结 构 与 算 法,34,第 1 章 引论,1.2 数据结构的内容,可归纳为三个部分,即逻辑结构、存储结构和运算集合。,按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机存贮器
13、中,并在这些数据上定义了一个运算的集合,就叫做数据结构。,返回,35,第 1 章 引论,1.3 算法,算法(Algorithm)定义,算法的特性,算法设计的要求,36,Algorithm is a finite set of rules which gives a sequence of operation for solving a specific type of problem.,算法是规则的有限集合,是为解决特定问题而规定的一系列操作。,算法定义:,第 1 章 引论,1.3 算法,37,算法特性:,有限性:,有限步骤之内正常结束,不能形成无穷循环;,确定性:,算法中的每一个步骤必须有确
14、定含义,无二义性得以实现;,输 入:,有多个或0个输入;,输 出:,至少有一个或多个输出;,可行性:,原则上能精确进行,操作可通过已实现基本运算执行有限次而完成。,第 1 章 引论,1.3 算法,38,设计的要求:,正确性,可读性,健壮性,高效率和低存储量,例如:要求n个数的最大值问题,算法如下:max=0;for(i=1;imax)max=x;,返回,第 1 章 引论,1.3 算法,39,算法、语言、程序的关系,设计实现算法过程步骤,类描述算法的语言选择,第 1 章 引论,1.3 算法,40,算法、语言、程序的关系,算法:描述了数据对象的元素之间的关系(包括数据逻辑关系、存贮关系描述)。,描
15、述算法的工具:算法可用自然语言、框图或 高级程序设计语言进行描述。,程序:是算法在计算机中的实现。,第 1 章 引论,1.3 算法,41,设计实现算法的步骤:,找出与求解有关的数据元素之间的关系;,考虑数据元素的存储表示;,确定在某一数据对象上所施加运算;,选择描述算法的语言;,设计实现求解的算法,并用程序语言加以描述。,第 1 章 引论,1.3 算法,42,类描述算法的语言选择,类语言:,类语言是接近于高级语言而又不是严格的高级语言,具有高级语言的一般语句设施,撇掉语言中的细节,以便把注意力主要集中在算法处理步骤本身的描述上。,返回,第 1 章 引论,1.3 算法,43,评价算法的标准:,评价一个算法主要看这个算法所占用机器资源的多少,而这些资源中时间代
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1