目录
数据类型
1、什么是数据类型
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
在高级程序语言的编写中,每个变量、常量或表达式都有一个它所属的确定的数据类型。
类型明显或隐含地规定了在程序之星期间变量或表达式所有可能值的范围,以及在这些值上允许进行的操作。
例如,C语言中的整型变量,值集为某个区间上的整数,值集上的操作为加、减、乘、除等算术运算。
2、数据类型的分类
高级程序语言中的数据类型可以分为两类:
1.原子类型:原子类型的值是不可分割的。比如C语言中的整型,字符型,指针型等
2.结构类型;结构类型的值是由若干成分按某种结构组成的,是可分解的,并且它的成分可以是结构的也可以是非结构的。例如,一维数组的成分是若干个原子类型的整型,而二维数组的成分则是若干个结构型的一维数组。
抽象数据类型
1、什么是抽象数据类型
抽象数据类型(简称ADT)是指一个数学模型以及定义在该模型上的一组操作。
抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算及内部如何表示和实现无关。
抽象数据类型和数据类型实质上是一个概念。抽象的意义在于数据类型的数学抽象特性。
还需要说明一点,抽象数据类型的范畴更广,它不再局限于处理器已经定义实现的数据类型(固有数据类型),还包括用户在设计软件系统时自己定义的数据类型。
2、抽象数据类型的分类
抽象数据类型的定义由一个值域和定义在值域上的一组操作组成,按其不同特性可分为一下三类:
1.原子类型:变量不可分解。这类抽象数据类型较少,因为一般情况下固有数据类型足以满足需求,但有时也必要定义新的原子数据类型。例如数位为100的整数。
2.固定聚合类型:值由确定数目的成分按某种结构组成。例如,复数是由两个实数依确定的次序关系构成。
3.可变聚合类型:和固定聚合类型相比值的成分的数目不确定,例如长度可变的有序整数序列。
后两种类型可统称结构类型。
3、抽象数据类型的表示
抽象数据类型可用以下三元组表示
(D,S,P)
其中,D是数据对象,S是D上的关系集,P是对D的基本操作集。采用以下格式:
ADT 抽象数据类型名{
数据对象:<数据对象定义>
数据关系:<数据关系定义>
基本操作:<基本操作定义>
}ADT 抽象数据类型名
其中数据对象和数据结构的定义用伪代码描述,基本操作定义格式为:
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
基本操作有两种参数:赋值参数(只提供输入值)和引用参数(用&打头,提供输入值返回操作结果)。
初始条件描述了操作执行前数据结构和参数应该满足的条件,若不满足则操作失败并返回相应错误信息。
操作结果说明了操作正常完成之后数据结构的变化状况和应返回的结果。
例如,构造一个远的抽象数据类型如下:
ADT Circle {
数据对象:D={ r,x,y | r,x,y 为实数)
数据关系:R={ <r,x,y> | r是半径, <x,y>是圆心坐标}
基本操作:
Circle(&C,r,x,y)
操作结果: 构造一个圆
double Area(C)
初始条件: 圆已存在
操作结果: 计算面积
double Circumference (C)
初始条件: 圆已存在
操作结果: 计算周长
……
} ADT Circle