精华内容
下载资源
问答
  • 抽象数据类型

    千次阅读 2021-03-04 15:41:05
    抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,抽象数据类型就是把一些有一定关联的基本数据类型打包,然后...

    抽象数据类型,泛指除基本数据类型以外的数据类型。
    基本数据类型被认做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,抽象数据类型就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用

    展开全文
  • 数据类型: 是个值的集合和定义在此集合上组操作的总称。 数据类型有两:简单型和结构类型。...抽象数据类型(Abstract Datat Type, ADT): 是个数学模型和定义在此数学模型上组操作。 ...

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

    抽象数据类型(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就是定义在这个数据结构上的操作集。当在讨论数据结构的时候,都是从抽象数据类型出发的,也就是说数据结构和它的操作集是一个整体。

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

    展开全文
  • 抽象数据类型(ADT)入门(

    千次阅读 2015-03-20 16:40:02
    抽象数据类型(ADT)入门() 1、抽象数据类型(Abstract Data Types,ADT)和ADT的实现 抽象数据类型个数据元素集合以及在这些数据上的操作。 ADT的个实现包括存储数据元素的存储结构以及实现基本操作的...

    抽象数据类型(ADT)入门(一)


    1、抽象数据类型(Abstract Data Types,ADT)和ADT的实现

    抽象数据类型:一个数据元素集合以及在这些数据上的操作。

    ADT的一个实现包括存储数据元素的存储结构以及实现基本操作的算法。

    在这个数据抽象的思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念。这使得只研究和使用它的结构而不用考虑它的实现细节成为可能。实际上,这通常使用在int、double、char和bool等预定义数据类型上的方法,使用这些数据类型的程序员在绝大部分时间里不需要担心这些数据类型是如何实现的。


    2、C++的简单数据类型以及它们是如何实现的?

    C++中的基本数据类型如int/char/double/float等被称为简单数据类型,这是因为这些数据类型的值都是原子性的,也就是说,它是由不可再分的一个单独的实体构成的。但是它们又可以被看成是抽象数据类型,因为这些数据类型描述了一系列的值并提供了在这些值上操作的实现,对它们中的每一个来说,都是使用存储器单元作为存储结构,而它们的基本操作则是由计算机系统的硬件或者软件实现的。


    (1)、整型数据:

    无符号整数非负整数,有时也被称为基数或全数,其集合是{0,1,2,3,....}。在C++中,这个ADT是通过3种数据类型建模的:unsigned short int(unsigned short)、unsigned int(unsigned)、unsigned long int(unsigned long),这些类型的值在内存中存储为一个位串。它们的长度必须满足:

    sizeof(unsigned short) ≦ sizeof(unsigned) ≦ sizeof(unsigned long)

    注:sizeof是一个C++的运算符,返回一个类型所占的字节数。典型地,unsigned short类型的值用2个字节存储,unsigned类型的值用4个字节存储,而unsigned long类型的值用4或8个字节存储。

    下面给出示例代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    	cout<<"sizeof(unsigned short)="<<sizeof(unsigned short)<<endl;
    	cout<<"sizeof(unsigned)="<<sizeof(unsigned)<<endl;
    	cout<<"sizeof(unsigned long)="<<sizeof(unsigned long)<<endl;
    
    	return 0;
    }
    结果如下图所示:



    带符号整数整数集合{....,-3,-2,-1,0,1,2,3,....}以及熟悉的一些算术运算也构成一种ADT。在C++中,这个ADT是通过3种数据类型建模的:short int(short)、int、long int(long)。典型地,short类型的值用2个字节存储,int类型的值用4个字节存储,而long类型的值用4或8个字节存储。

    注:正数和负数的原码都是其本身,只需在首位加上符号位即可;正数的反码不变,负数的反码是除符号位之外全反;正数的补码不变,负数的补码是符号位不变,全反加1即可。它们之间的区别见下图:





    (2)、实型数据:

    实数值,也称为浮点值,在C++中是通过单精度类型float,双精度类型double和扩展精度类型long double来建模的。


    其中,double是处理实数数据的默认数据类型;可以在一个实数常量的后面添加一个后缀F从而规定将这个实数常量当做float值处理;如果添加一个L后缀,则规定将这个实数常量当做long double值处理。


    注:在一个实数数字的二进制表示被存储到存储器之前,通常都要将它转换为浮点形式。


    注:实数值的存储会存在“舍入错误”,这种错误可以通过存储更多数量的位数来减少,但是不能够被完全消除。请理解理论上的数值和计算机能存储的值之间的区别!!!这也是一个ADT不能完全忠实于这个ADT的表示(数学上的)实数和在实数上的操作的一个例子。


    (3)、字符数据:

    在编程语言中主要使用两种字符集。ASCII(America Standard Code for Information Interchange,美国信息交换标准码)是最常用的,但是一些语言使用Unicode,例如Java。而在C++中,字符通常都是使用char类型来处理的,这种类型使用一个能存储在一个字节中的数字代码表示每个字符。而Unicode使用了2个字节编码。


    C++提供了宽字符类型wchar_t来存储Unicode之类的大字符集中的字符。在C++中,字符值可以被当做整数值处理:

    int(char_value)=char_value的整数代码

    实际上,char类型的值可以和数字值一起组合到算术表达式中,此时将使用char型值的数字编码。


    (4)、布尔数据:

    在C++中布尔值和布尔运算是通过bool数据类型建模的。有两个布尔常量:false(0)和true(1)。


    在输入和输出bool型值时,会自动进行这些数字值和布尔值之间的转换。


    3、ADT的实现并不忠实于ADT的表示的例子

    对所有有限多个数据元素的ADT来说,表示数据值集合上的限制都是固定的,因为用来存储这些元素的内存是有限的。

    ADT的实现并不忠实于ADT的表示的例子:溢出。

    下面给出两个例子作为证明。

    //-- Program to demonstrate the effects of overflow 
    #include <iostream>  
    using namespace std; 
    int main() 
    { 
       int number = 2; 
       for (int i = 1; i <= 15; i++) 
       { 
          cout << number << endl; 
          number *= 10; 
       } 
     }
    结果如下图:


    //-- Program to demonstrate the effects of overflow
    #include <iostream>
    #include <climits>
    using namespace std;
    int main()
    {
       int number = INT_MAX - 3;
       for (int i = 1; i <= 7; i++)
       {
          cout << number << endl;
          number++;
       }
    }

    结果如下图:



    DT的实现并不忠实于ADT的另一个原因是:实现中的操作不一定能够完全按照相应的ADT的操作一样的方式执行。



    大笑大笑大笑。。。。

    关于《4、程序员可定义的新数据类型(Typedef和枚举)》和《5、指针》的介绍将在下一篇博文《抽象数据类型(ADT)入门(二)》中做详细的介绍。

    展开全文
  • 如何理解数据结构中的抽象数据类型

    万次阅读 多人点赞 2018-09-04 18:49:23
    抽象数据类型(Abstract Data Type,ADT)是指个数学模型以及定义在这个模型上的组操作。 抽象数据类型的定义仅仅取决于它的组逻辑特性,而与它在计算机中的表示和实现无关。 例如,int类型的数据表示的.....

    ##抽象数据类型的标准格式

    ADT 抽象数据类型名
    {
    Data:
    数据元素之间逻辑关系的定义;
    Operation:
    操作1;
    操作2;
    ...
    }
    

    ##什么是抽象数据类型?

    抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作。
    抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。

    例如,int类型的数据表示的是整数,可以进行加减乘除模等一些运算,int类型数据的这些数学特性保持不变,那么在编程者来看,他们都是相同的。

    因此,数据抽象的意义在于数据类型的数学抽象特性。

    抽象数据类型和数据类型在实质上是一个概念,只不过是对数据类型的进一步抽象,不仅限于各种不同的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型。

    例如,在统计学生信息时,经常使用姓名、学号、成绩等信息,我们可以定义这样的一个抽象数据类型student,它封装了姓名、学号、成绩三个不同类型的变量,这样操作student的变量就能够很方便的知道这些信息了。C语言中的结构体以及C++、java语言中的类等都是这种形式。


    ##通俗的讲
    抽象数据类型,泛指除基本数据类型以外的数据类型。

    什么叫类型?就是一类数据。基本数据类型被人做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,抽象数据类型就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用。
    至于有什么用,这个用处可大了。比如你要实现对一个人地信息管理,如果你只用基本数据类型那么你需要定义很多数据类型的变量比如名字、性别、出生地、生日之类的,并且操作起来不方便。如果用抽象数据来实现就简单了,直接把这些信息放包装在一个新的数据类型中,然后就可以直接定义这样的一个变量就可以了。
    C++中的类更好的实现了封装功能,这就是类。类使得抽象数据类型的可操作性更强了,真正实现了面向对象。至于用法,只要学过C++肯定知道类地用法吧?那就是如何用。也许你现在觉得这样的操作更麻烦了,还不如C语言简洁的好。但是当你有一天真正的进入了公司,你才发现面向对象编程是多么棒的一种编程方式,他可以让你更高效的去开发。
    同时告诉你,你对负责操作不是很了解只能证明你的编程数量不够,在编程领域中永远要记住一句话:钢是打出来的。编程仅仅靠看书或是听老师讲解是行不通的,必须亲自躬行才能真正掌握它

    展开全文
  • 抽象数据类型的实例

    千次阅读 2020-03-20 15:21:38
    重新学习数据结构,主要了解了一些关于数据结构的一些相关的概念; 数据结构是一种带结构的数据集合;它包括逻辑结构还有存储结构,然后学习了一下数据类型的表示以及实现...抽象数据类型的定义仅仅取决于它的一组逻...
  • 数据结构、数据类型、抽象数据类型之间的区别

    千次阅读 多人点赞 2019-11-03 20:15:37
    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。) 逻辑结构指反映数据元素之间的逻辑关系的数据结构,...
  • 数据结构-抽象数据类型

    千次阅读 2017-12-19 14:19:27
    抽象数据类型的定义可以由一种数据结构和定义在其上的一组操作组成,数据结构又包括数据元素以及元素之间的关系。因此抽象数据元素类型一般由元素、关系及操作三种元素来定义。(D,R,P) D 是数据对象、R是D上的...
  • 什么是抽象数据类型

    千次阅读 2021-04-29 23:15:13
    抽象数据类型(Abstract Data Type,ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。ADT的基本思想是抽象,或者说是数据抽象(与函数定义实现的计算抽象或过程抽象对应...
  • 抽象数据类型(Abstract Data Type 简称ADT)是指个数学模型以及定义在此数学模型上的组操作。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。对抽象数据类型进行定义时,必须给...
  • 1.1.2抽象数据类型举例

    千次阅读 2016-02-14 09:36:47
    java.lang.* 包下的抽象数据类型java标准库中的抽象数据类型I/O处理类的抽象数据类型面向数据类抽象数据类型(现实中的实例,通过面向对象的封装性包装)集合类抽象数据类型( bag, stack, queue )面向操作的抽象数据...
  • java算法:抽象数据类型ADT

    千次阅读 2012-10-26 12:45:20
    java算法:抽象数据类型...抽象数据类型一种智能通过接口访问的数据类型(值与值上的操作所构成的集合),我们把使用ADT的程序称为客户程序,把指定数据类型的程序称为实现。 抽象数据类型与其他数据类型的主要区别
  • 常见抽象数据类型

    千次阅读 2019-03-27 15:48:25
    、栈 结构:栈顶、栈底 特点:后进先出。从栈顶压入栈,从栈顶压出栈 二、队列 1、队列 结构:队头、队尾 特点:先进先出。从队尾入队列,从队头出队列 2、双端队列 结构:队头、队尾 特点:队头队尾均可入队/出队...
  • 从基本数据类型到抽象数据类型

    千次阅读 2018-07-03 14:49:40
    在冯 · 诺依曼体系结构中,程序代码和数据都是以二进制存储的,因此,对计算机系统和硬件本身而言,数据类型的概念其实是不存在的。机器指令和汇编语言中,数据对象是用二进制数表示的,内存里存的都是二进制,对于...
  • 抽象数据类型(ADT)

    千次阅读 2017-09-12 21:10:48
    说到抽象数据类型,那么就得先提到数据类型数据类型指的是个值的集合以及定义在这个集合上的组操作为什么要有不同的数据类型呢 当我们计算1+1的时候,只需要很小的存储空间,但是当我们去计算10000+100000的时候...
  • C语言实现抽象数据类型(ADT)

    千次阅读 多人点赞 2020-12-22 20:49:02
    C语言实现抽象数据类型(ADT)什么是抽象数据类型(ADT)C语言通过怎样的方式来实现ADT举例前言、pandas是什么?二、使用步骤1.引入库2.读入数据总结学习目标:学习内容:学习时间:学习产出: 什么是抽象数据类型...
  • 数据结构和抽象数据类型

    千次阅读 2016-01-15 16:41:31
    这两个概念,尤其是第个都是特别抽象的概念,没什么具体可对应的实体可以给你举例,我就粘贴复制了,说说我的理解吧。数据结构呢,我们总是为了完成个功能或者目的写程序,但不管什么程序、代码实际上都是一些...
  • 数据结构、数据类型和抽象数据类型,这三个术语在字面上既不同又相近,反映出它们在含义上既有区别又有联系。 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映个数据的内部构成,即个数据...
  • HIT 软件构造 抽象数据类型

    千次阅读 2019-06-12 17:14:42
    抽象数据类型(ADT) ADT的特性:表示泄漏、抽象函数AF、表示不变量 将ADT的操作分类 你可以从下图来理解 T是ADT本身,t;是其他类型,*和+说的都是出现次数,和正则是一样的 creator 构造器 直接构造出个新的...
  • 参考Primer C++ 第七章第一节 类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和...1.定义抽象数据类型 1.1设计类 确定变量、成员函数、非成员函数 1.2定义类 Sales_data类如下所示: stru...
  •  当建立好抽象数据类型的时候,数据库管理员就可以向基本数据类型那样,引用抽象数据类型包括在建立表或者对相关字段进行赋值的时候,都这么方便。 如在建立表的时候,可以把这个抽象数据类型直接跟某个字段关联...
  • 5-抽象数据类型(ADT)

    千次阅读 多人点赞 2018-05-25 11:40:53
    包括现在我们使用的即时通讯软件,浏览器等,能用计算机做的事情有很多。对于正在学计算机的同学来说,以后也可能会用计算机去做这些事情的,势必也要去设计这样的个系统。 图1-以数据为核心的思维   对于这...
  • 软件构造之抽象数据类型

    千次阅读 2018-03-29 09:25:36
    什么是抽象抽象数据类型是软件工程中一般原理的个实例,它有许多名称,其意义略有不同:抽象。用更简单,更高层次的概念来省略或隐藏底层细节。模块化。将系统划分为组件或模块,每个组件可以与系统的其他部分分开...
  • 抽象数据类型定义(ADT)

    千次阅读 2014-08-14 13:33:48
    抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:个数学模型以及定义在该模型上的组操作。 关键:使用它的人...
  • 第二章 2.2 什么是抽象数据类型

    千次阅读 2016-09-24 00:40:54
    语言的发展就是一种抽象的产物。新的简写记号能表达更广泛的概念。 一条c语句平均代表10条汇编。一条c++平均代表3条c语句。 汇编语言也包含了有用的抽象,难以察觉的是,就是“内存”与“寄存器”的概念,也是抽象,...
  • 抽象数据类型(abstract data type,ADT)是指个数学模型以及定义在该模型上的组操作。 ADT 抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> ...
  • //数据结构基本概念 ...数据抽象的概念,将其进行分类后得到程序设计语言中的类型。如:int,float,char等等 数据项:数据元素由若干数据项组成 数据元素:组成数据对象的基本单位 数据对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 550,561
精华内容 220,224
关键字:

一种抽象数据类型包括