如何理解数据结构中的抽象数据类型
2020-06-23谢琪林攀枝花学院智能制造学院
谢琪林 攀枝花学院 智能制造学院
在编程语言中存在数据结构(Abstract Data Type,ADT)这样的一门学科,很多初学者对抽象数据类型出现理解困难问题,应用无从谈起的情况,今天我们一起来谈谈数据结构C 语言实现的正确认识以及初步的应用。
抽象数据类型这个概念有两个关键字,即:抽象,和数据类型。我们先来谈谈C 语言环境下数据类型的概念。
数据类型:一组性质相同的值的集合以及定义在此集合上的一些操作的总称。此中有集合与操作两个关键字。
什么性质相同的值的集合?就是一类数据。基本数据类型被人做是最基本地,不可再划分的数据,一般就是整形、浮点型性质相同的值的集合在C 语言中包括:
在C 语言中,按照取值不同,数据类型可分为两类:
①、原子类型:是不可再分解的基本类型,包括整型、实型、字符型等。
②、结构类型:由若干的类型组合而成,是可以再分解的。例如:整型数组是由若干整型数据组合而成的。
比如:在C 语言中,声明变量int a,b,这就意味着在给变量a、b 赋值时不能超出int 的取值范围,变量a 和b 的运算只能是int 类型所允许的运算。
其对应的操作有:
数据类型按值的不同进行划分。在高级语言中,每个变量、常量及表达式都有各自的取值范围,类型就用来说明变量或表达式的取值范围和所能进行的操作。
无论是什么计算机或计算机语言都会面临着整型运算、实数运算、字符运算等操作,我们可以考虑把他们抽象出来。
那么抽象是指抽取出事物具有普遍性的本质。它是抽出问题的特征而忽略非本质的细节,是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了复杂的细节,只保留了实现目标所必须的信息。
ADT 是指一个数学模型以及定义在这个模型上的一组操作,其定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。其作用比如你要实现对一个班级同学信息管理的系统,如果你只用基本数据类型那么你需要定义很多数据类型的变量比如名字、性别、出生地、生日之类的,操作起来不是非常方便,但用抽象数据来实现就简单了,直接把这些信息放包装在一个新的数据类型中,然后就可以直接定义这样的一个变量就可以了。所以我们可以得出结论:ADT 和数据类型在实质上是一个概念,只不过是对数据类型的进一步抽象,不仅限于各种不同的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型,是一个数学模型以及定义在其上的一组操作组成,其一般的定义
例如,int 类型的数据表示的是整数,可以进行加减乘除模等一些运算,int 类型数据的这些数学特性保持不变,那么在编程者来看,他们都是相同的。因此,数据抽象泛指除基本数据类型以外的数据类型。其意义在于数据类型的数学抽象特性。在C 语言中实现的具体形式就是结构体,在C++就是类的定义。
例如,在统计学生信息时常使用姓名、学号、成绩等信息,我们可以定义这样的一个抽象数据类型student,它封装了姓名、学号、成绩三个不同类型的变量,这样操作student 的变量就能够很方便的知道这些信息了。C 语言中的结构体以及C++、java 语言中的类等都是这种形式。
ADT 是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,ADT 就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用。
至于有什么用,这个用处可大了。比如你要实现对一个人地信息管理,如果你只用基本数据类型那么你需要定义很多数据类型的变量比如名字、性别、出生地、生日之类的,并且操作起来不方便。如果用抽象数据来实现就简单了,直接把这些信息放包装在一个新的数据类型中,然后就可以直接定义这样的一个变量就可以了。