首页 > 编程知识 正文

抽象数据类型包括定义和实现两方面,抽象数据类型如何表示

时间:2023-05-04 16:51:09 阅读:231157 作者:984

数据类型: 是一个值的集合和定义在此集合上一组操作的总称。
数据类型有两种:简单型和结构类型。
对于结构类型,比如数组,它的值是可以分割的,它是某个结构的值,因此数组这个数据类型的子集是一个数据结构。所以数据类型也可以看做是一个数据结构和定义在这个数据结构上一组操作的总称。

抽象数据类型(Abstract Datat Type, ADT): 是一个数学模型和定义在此数学模型上一组操作。
在数据结构中,这个数学模型指的就是数据结构。因此在数据结构中,讨论的抽象数据类型是:一个数据结构和定义在这个数据结构上的一组操作。
因为ADT有两个重要特征,所以从抽象数据类型这个角度讨论数据结构有很多好处。
【ADT的两个重要特征】
1.数据抽象
数据的抽象性指的是:用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)。
强调的是本质特征,自然会忽略掉无关紧要的属性;描述的是外部使用的接口,能保证外部用户正确地使用它们。
例如: 抽象复数的数据类型
复数类型在高级语言里不能直接进行加减,为了使外部用户能够直接使用它,这时就可以定义抽象数据类型复数。
抽象数据类型复数的定义:

ADT Complex{数据对象: D={e1,e2 | e1,e2∈RealSet} 数据关系: R1={<e1,e2> | e1是复数的实数部分,e2是复数的虚数部分} 基本操作: InitComplex(&Z,v1,v2) //初始化一个复数 操作结果:构造复数Z,其实部和虚部分别被赋以参数v1和v2值。 DestroyComplex(&Z) //销毁一个复数 操作结果:复数Z被销毁。 GetReal(Z,&realPart) //取复数的实部 初始条件:复数已存在。 操作结果:用realPart返回复数Z的实部值。 GetImageNet(Z,&imagPart) //取复数的虚部 初始条件:复数已存在。 操作结果:用imagPart返回复数Z的虚部值。 Add(z1,z2,&sum) // 两个复数相加 初始条件:z1,z2是复数。 操作结果:用sum返回两个复数z1,z2的和值。}ADT Complex

外部用户对复数操作的时候,只需要简单地调用相加的函数就能实现,这样就实现了抽象数据类型的抽象性。
2.数据封装
数据的封装性指的是:将实体的外部特性和其内部实现的细节分离,并且对外部用户隐藏其内部实现细节。
例如:对于刚才的抽象数据类型复数,外部用户想要实现两个复数的相加,只需要调用相加的函数就可以了,不需要关心复数在计算机内部是怎么表示的。

抽象数据类型的描述方法: 抽象数据类型可用(D, S, P)三元组表示,其中,D是数据对象,即具有相同特性的数据元素的集合,S是D上的关系集,P是对D的基本操作集。
说明: D+S实际上就是数据结构,P就是定义在这个数据结构上的操作集。当在讨论数据结构的时候,都是从抽象数据类型出发的,也就是说数据结构和它的操作集是一个整体。

抽象数据类型的表示方法: 抽象数据类型通过已有的数据类型来实现。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。