5、抽象数据类型抽象数据类型和数据类型实质上是一个概念,但抽象数据的范畴更广。它不局限于固有数据类型,还包括用户在设计软件系统时自己定义的数据类型。数据类型是一个值的集合和定义在此集合上的一组操作的总称。例:整数类型是一个ADT,其数据对象是指能容纳的整数,基本操作有加、减、乘、除和取模等。抽象数据类型指一个数学模型以及定义在此数学模型上的一组操作。本书以下格式定义抽象数据结构:ADT抽象数据类型名{数据对象:〈数据对象的定义〉数据关系:〈数据关系的定义〉基本操作:〈基本操作的定义〉}伪代码例1.6抽象数据类型矩形的定义。一个矩形必须具备长度和宽度,因此,矩形的抽象数据类型的基本数据项应该是矩形的长(Length)和宽(Width)。另外,对矩形的基本操作应该包括:构造矩形长度、求矩形的周长、求矩形的面积。ADTRectangle{数据对象:D={Length,Width|∈实数}数据关系:R={Length,Width}基本操作:InitRectangle(Rectanglerec,h,w)操作结果:构造了一个矩形,矩形的长和宽分别被赋以参数h,w的值。GetPerimeter(Rectanglerec,e)初始条件:矩形rec存在;操作结果:用e返回rec的周长。GetArea(Rectanglerec,e)初始条件:矩形rec存在;操作结果:用e返回rec的面积。}1.3抽象数据类型的实现抽象数据类型可通过固有数据类型来表示和实现,用已存在的数据类型来说明新的结构,用已实现的操作来组合新的操作。本书在高级程序设计语言C语言的层次上讨论抽象数据类型的表示和实现。1.预定义常量、类型和所需要的头文件#includestring.h#includectype.h#includemalloc.h //malloc()等#includestdio.h //EOF(=^Z或F6),NULL#includemath.h //floor(),ceil(),abs()#includeprocess.h //exit()#defineTRUE1 //?函数结果状态代码#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSEtypedefintElemType;//数据元素定义,用户在使用该数据类型时也可自行定义本书把以上的代码作为一个独立的头文件,命名为head1-1.h,以便被后续章节的程序使用。2.存储结构用类型定义(typedef)描述例1.7抽象数据类型Rectangle的实现typedefstruct{ floatHeight; floatWidth;}Rectangle;//矩形抽象数据类型的存储结构voidInitRectangle(Rectanglerec,floath,floatw){rec.Height=h;//操作结果:初始化矩形,长为h,宽为wrec.Width=w;}voidGetPrimeter(Rectanglerec,floatpre){ //初始条件:矩形存在pre=rec.Height*2+rec.Width*2; /操作结果:pre返回矩形的周长}voidGetArea(Rectanglerec,floatarea)//初始条件:矩形存在{area=rec.Height*rec.Width;//操作结果:area返回矩形的面积}#includestdio.hintmain() //用主程序检验3个基本操作是否完成其功能{floate;Rectanglerect;InitRectangle(rect,4.5,5.5);//构造一个高为4.5m,长为5.5m
原创力文档

文档评论(0)