精华内容
下载资源
问答
  • 一种抽象类型包括那三个
    千次阅读
    2017-09-12 21:10:48

    说到抽象数据类型,那么就得先提到数据类型

    数据类型指的是一个值的集合以及定义在这个集合上的一组操作

    为什么要有不同的数据类型呢 当我们计算1+1的时候,只需要很小的存储空间,但是当我们去计算10000+100000的时候,所需要的空间就会大许多,那么我们为了去区分这些类别的差异,就有了不同的数据类型来更精确的确定存储空间的划分

    第一次看到 int a;的时候,可是一脸懵逼,以为只是告诉我们这是一个“int”型的数据,现在看来,还是太浅了

    而抽象数据类型包含三个部分:数据对象(数据元素)、数据关系(数据关系二院组结合)、基本操作(操作函数的罗列)。

    那么按我的理解用大白话来说:
    1. ADT和数据类型的关系,是被包起来的,即ADT∈数据类型
    2. ADT需要通过固有的数据类型来实现
    3. 举个列子,就像定义一个结构体,里面有很多不同的类型,然后定义基本操作,也就是说定义的函数

    更多相关内容
  • 数据结构、数据类型抽象数据类型之间的区别

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

    三者的定义(蓝字可忽略):

    • 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。)
      • 逻辑结构指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。包括: 
        • 1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 
        • 2.线性结构:数据结构中的元素存在一对一的相互关系; 
        • 3.树形结构:数据结构中的元素存在一对多的相互关系; 
        • 4.图形结构:数据结构中的元素存在多对多的相互关系。
      • 物理结构:指数据的逻辑结构在计算机存储空间的存放形式。 
        • 数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。 
        • 数据元素的机内表示(映像方法): 用二进制位(bit)的位串表示数据元素。通常称这种位串为节点(node)。当数据元素有若干个数据项组成时,位串中与个数据项对应的子位串称为数据域(data field)。因此,节点是数据元素的机内表示(或机内映像)。 
        • 关系的机内表示(映像方法):数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。 
    • 数据类型:是一个值的集合以及定义在这个值集上的一组操作。数据类型的分类为:原子类型和结构类型。
      • 为什么要有数据类型:计算机中内存也是有限的,为了提高内存使用效率,不浪费空间,自然是需要设计出数据类型来划定多大数据占多大内存空间,就有了数据类型。
    • 抽象数据类型:抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型,如int,float等)来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。

    数据结构和数据类型的区别:

    • 数据类型的分类为:原子类型和结构类型;
      • 原子类型 = 一种值的集合 + 定义在值集合上的一组操作。(比如:int,float,字符串)
        • int型:包括值集(1,2,3,4,5。。。),并且可以在这些值上进行+-*/
      • 结构类型 = 一种数据结构 + 定义在这种数据结构上的一组操作。(比如:python中的列表,字典,元组)
      • 原子类型 + 结构类型 = 数据类型
    • 总结:数据结构是一种值(值=数据元素)的集合(根据数据结构的定义,只是给“值的集合”加了个约束:数据元素相互之间存在一种或多种特定关系,所以可以把数据结构看作一种值的集合),这种值集+定义在值集上的一组操作就是结构类型,而结构类型是数据类型的一种,所以数据结构是一种数据类型。
    • 数据结构可以看成是数据类型的一个子集(如下图):

    数据类型与抽象数据类型的区别:

    • 数据抽象的意义在于数据类型的数学抽象特性。抽象数据类型和数据类型实质上都是概念,只不过抽象数据类型是对数据类型的进一步抽象。不仅限于各种不同的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型。不仅限于各种不同的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型。如:C++中的类就是抽象数据类型的一种具体实现。
    • 通俗的讲:抽象数据类型,泛指除基本数据类型以外的数据类型。
      • 什么叫类型?就是一类数据。基本数据类型被人做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。其实说白了,抽象数据类型就是把一些有一定关联的基本数据类型打包,然后当做新的数据类型使用。
      • 抽象数据类型的用处:比如你要实现对一个人地信息管理,如果你只用基本数据类型那么你需要定义很多数据类型的变量比如名字、性别、出生地、生日之类的,并且操作起来不方便。如果用抽象数据来实现就简单了,直接把这些信息放包装在一个新的数据类型中,然后就可以直接定义这样的一个变量就可以了。

    如果还不清楚两者的区别的话可以参考一下这篇文章:https://blog.csdn.net/weixin_42257806/article/details/80892797

    数据结构和抽象数据类型之间的区别:

    • “数据结构”定义为一个二元组(D,S),即两个集合,D是数据元素的集合,S是数据元素之间一个或多个关系的集合。
    • “抽象数据类型”本质是“数据类型”,与计算机相关,涉及数据的存储及如何用存储来反应数据元素之间的关系。它定义为一个三元组(D,S,P),加上的P是定义的一组针对存储的数据操作(如插入,删除,排序等)。
    • 总之“抽象数据类型”是“物理”概念,“数据结构”是“逻辑”概念。“抽象数据类型”来实现“数据结构”。

    上面就是对数据结构、数据类型、抽象数据类型之间的区别的说明,若有错误,欢迎指正。

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

    万次阅读 多人点赞 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语言简洁的好。但是当你有一天真正的进入了公司,你才发现面向对象编程是多么棒的一种编程方式,他可以让你更高效的去开发。
    同时告诉你,你对负责操作不是很了解只能证明你的编程数量不够,在编程领域中永远要记住一句话:钢是打出来的。编程仅仅靠看书或是听老师讲解是行不通的,必须亲自躬行才能真正掌握它

    展开全文
  • 5-抽象数据类型(ADT)

    千次阅读 多人点赞 2018-05-25 11:40:53
      在现实中计算机能够解决非常多的问题,如图1所示,可以用计算机去实现一个GIS地理信息系统,也可以实现一个电子病历系统,或者实现一个计算机管理资源的图形化界面等。包括现在我们使用的即时通讯软件,浏览器等...

    1. 以数据为核心的思维

      在现实中计算机能够解决非常多的问题,如图1所示,可以用计算机去实现一个GIS地理信息系统,也可以实现一个电子病历系统,或者实现一个计算机管理资源的图形化界面等。包括现在我们使用的即时通讯软件,浏览器等,能用计算机实现的事情有很多。对于正在学计算机的同学来说,以后也可能会用计算机去做这些事情的,势必也要去设计这样的一个系统。

    这里写图片描述
    图1-以数据为核心的思维

      对于这些系统,我们通过分析发现它们所具有的的共性就是数据,同时我们在学习计算机时也应该做到这种以数据为核心的思维(也就是计算机思维,学会站在计算机的角度去思考和设计)。

      问题是我们如何做到以数据为中心思考,设计?

      在图中我们可以看到不同系统的数据都有不同的特点,比如:在GIS地理系统中的数据有自己的一些特点,在电子病历系统中的数据也有自己的一些特点。但是如果我们忽略这些系统表面的这些数据,抓取其本质来看这些系统都是数据,而这种忽略形态,抓本质的就是一种抽象的思维,那么我们在数据结构层面上如何做到忽略形态,抓本质呢?

    2. 数据类型

      我们先来看一下高级程序语言是如何来表示数据的,在具体的数据类型来看,高级程序语言中一般变量、常量或表达式,都有明确的所属数据类型。比如:int a 就表示我们定义了一个int类型的变量a,其中int就代表具体的数据类型。在C语言中这样的数据类型还有很多,具体如下所示:

    这里写图片描述
    图2-C语言中的数据类型

      在数据结构中所说的数据元素经常用构造类型中的结构体,数组来表示,而对于数据项来说,都是由基本类型来表示的。当多个基本类型的数据项去描述一个数据元素时,会用构造类型来描述数据元素。在使用高级语言中这些数据类型的时候,不同类型的变量的取值范围不一样,所能做的操作也不一样。

      比如:int和double的数据类型就不一样,在描述一个学生的年龄时使用int类型比较合适,身高用double类型,因此我们在用这些数据类型来进行某些操作时就需要选择合适的数据类型,在概括一个数据类型的方面时有两点要考虑:一是类型的取值范围,二是在这个取值范围所能做的操作

      数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作的总称,也是数据类型在数据结构中的本质。但是在高级程序语言中的数据类型是涉及到功能是如何具体实现的,在计算机具体存储,也就是说高级程序语言中的数据类型仍然是属于具体数据类型。

    3. 抽象数据类型(Abstract Data Type, ADT)

      数据结构中有一个非常重要的概念:即抽象数据类型(Abstract Data Type,ADT)。

      抽象数据类型 = 逻辑结构 + 抽象运算,也就是说抽象数据类型是建立在逻辑结构上的一些抽象的运算。对于逻辑结构之前有说过,逻辑结构是在普通面前所呈现的形态,并且不涉及到数据在计算机中具体的实现和存储的,对于数据时怎么在计算机中具体的实现和存储的是在存储结构中需要考虑的问题。因为逻辑结构不涉及任何具体的实现,所以在逻辑结构上的抽象运算也不会涉及到具体的实现到在计算机中具体的实现和存储,也就是说,不涉及到具体实现的就是抽象运算。这样做的意义是什么?

      对于数据结构中的抽象数据类型来说,抽象数据类型暂不考虑计算机的具体存储结构和运算的具体实现。也就是说我们不需要考虑具体实现的细节,而是把注意力集中到问题的本身去做,抽象数据类型实质上就是在描述问题本身(与计算机无关)

      于是我们可以知道抽象数据类型在整个的看待问题和分析问题来说简化了很多,因为在抽象数据类型阶段不考虑和计算机有关的因素去描述问题本身的,当把问题本身描述的非常清楚后,然后再做下一环节的问题:基于逻辑结构去设计存储结构,这样我们在分析一个问题就简化了。

      抽象数据类型:在不涉及具体的,和计算机系统相关的细节情况下,优先理解问题本身,在此基础上,实现用计算机求解问题的过程。这就是我们使用抽象数据类型的目的


      在分析一个复杂的问题的时候,如果直接就考虑到计算机的具体实现和存储这些细节时,这个过程需要的环节太多,会觉得难以进行下去。出现这种问题的原因在于没有把思考,分析一个问题分成两个阶段:先抽象数据类型分析清除问题本身,再去考虑问题具体的实现。由此可见数据结构的重要性。

    我们在使用抽象数据类型的时候,抽象数据类型(ADT)定义如下所示:

    ADT <抽象数据类型名>
    {
    数据对象:<数据对象的定义>
    数据关系:<数据关系的定义>
    基本操作:<基本操作的定义>
    }

    数据对象和数据关系是逻辑结构要关注的问题,基本操作就是抽象运算关注的。



    示例:抽象数据类型复数(e1+e2i)

    这里写图片描述
    图3-抽象数据类型复数(e1+e2i)

      通过这个示例我们可以看出,抽象数据类型就是在这种形式化的描述下把数据的组成和如何操作的问题描述清楚,且没有涉及到具体的计算机具体实现的一些问题。而右边是当我们通过抽象数据类型ADT描述清楚问题本身后,然后在此基础上设计高级程序语言中具体实现的过程,在这个阶段涉及到了计算机的具体实现和存储等因素。这也是我们在思考,分析一个问题该有的过程

      当分析一个复杂的问题,如果直接考虑具体实现和存储的话,这只会让问题更加困难和复杂,我们会认为这是个很难的问题。即便是勉强做到了,但也有可能会对程序后期造成安全隐患。如果我们按照上面这种方式先进行抽象数据类型,然后再考虑具体实现的话,这显然有利于我们分析并解决问题。

    4. 数据的抽象与封装

      在学习数据结构的时候我们需要理解和明白抽象数据类型的含义,而抽象数据类型中,就是对数据对象和数据运算的声明,将对数据对象的表示和数据运算的实现分离。其中抽象数据类型有两个比较重要的特征:

      1. 数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能,以及它和外部用户的接口。我们需要注意的是:这里在描述数据时忽略了数据的形态,而是一种数据抽象,且不会涉及到高级程序语言中的具体实现和存储。

      2. 数据封装:将实体的外部特征和内部实现细节分离,并且对外部用户隐藏其内部实现细节(即抽象数据类型内部的各种定义),对于用户来说只需要使用即可,不需要知道内部的具体实现细节。

    展开全文
  • 什么是抽象数据类型

    千次阅读 2021-04-29 23:15:13
    抽象数据类型(Abstract Data Type,ADT)是计算机领域中被广泛接受的一种思想和方法,也是一种用于设计和实现程序模块的有效技术。ADT的基本思想是抽象,或者说是数据抽象(与函数定义实现的计算抽象或过程抽象对应...
  • 在学习数据结构类型时,首先遇到的一个难点即是如何理解抽象数据结构类型。通过阅读多博客,将个人理解总结如下: 如已看过抽象数据类型定义,可直接跳过定义。 抽象数据类似的定义 抽象数据类型(Abstract Data ...
  • 常见抽象数据类型

    千次阅读 2019-03-27 15:48:25
    、栈 结构:栈顶、栈底 特点:后进先出。从栈顶压入栈,从栈顶压出栈 二、队列 1、队列 结构:队头、队尾 特点:先进先出。从队尾入队列,从队头出队列 2、双端队列 结构:队头、队尾 特点:队头队尾均可入队/出队...
  • 数据抽象三种抽象 视图抽象: 把现实世界中的信息按照不同用户的观点抽象为多逻辑数据结构。 每逻辑数据结构称为一个视图,描述了某些图特定用户所关心的数据。 所有视图的集合形成了数据库的外模式。 概念...
  • 它是数据的一种属性。这个属性限定了该数据的变化范围。数据类型仅局限于计算机中定义并实现了的数据类型。 数据结构:指的是数据之间的相互关系。主要体现在三个方面:1.数据间的逻辑结构,及数据元素之间的关系...
  • 编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接...编程定义一个图形接口 Shape, 内含2个抽象方法 get... JAVA编程题:编一个程序包含一个接口 shape(该接......
  • 服务的三种类型

    万次阅读 2019-08-04 20:29:07
    一般认为服务有以下三种主要的表现类型: 1. 工具服务 工具服务(Utility Service)代表可重用服务,区别业务模型。作为应用程序与技术基础设施之间的交叉点,工具服务的特点是业务领域无关,本质是面向技术、具备...
  • 每次要添加一种动物类,工厂就要多加一type。导致这工厂类会变得非常繁重,甚至加入的这type也可能再有变动。 二、工厂方法模式 例如:一动物基类(抽象基类):描述什么是动物 N动物类(继承抽象类):具体是...
  • 例如高级语言都有的“整数”类型就是一种抽象数据类型,只不过高级语言中的整型引进实现了,并且实现的细节可能不同而已。我们没有意识到抽象数据类型的概念已经孕育在基本数据类型的概念之中,是因为我们已经习惯于...
  • 设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两方法 设计抽象类 就要使用abstract关键字,抽象类中的抽象方法要...
  • Java 抽象类和接口,看这篇就够了

    千次阅读 2018-12-21 08:32:57
    尽管接口使得抽象更进一步,但任何抽象性都应该根据真正的需求而产生,因此恰当的原则是优先选择类而不是接口,只有在真正需要接口的时候再重构代码。
  • 数据结构-抽象数据类型

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

    千次阅读 2018-07-01 09:35:57
    抽象数据类型概述抽象数据类型(Abstract Data Type, ADT)是软件构造过程中的一个重要实例,与传统的数据类型不同的是,抽象强调作用于数据上的操作,程序员和用户无需关心数据是如何存储的,只需要设计和使用该...
  • 抽象工厂模式是一种为访问类提供一创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。 抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一...
  • 、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器...
  • java:抽象的两实现方式(抽象类和接口)及其比较

    千次阅读 多人点赞 2018-02-23 20:57:38
    对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现面向对象的编程(OOP)的抽象...抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: abstract v...
  • 无意间都到篇《走心的安卓工程师跳槽经验分享》,发现自己工作几年了,技术方面虽然有了飞跃的进步,可是不知道自己的技术到了什么地步,每方面我都涉及到了,但都不深,这大概是初级工程师的诟病吧!...
  • AbstractKnowledgeGraph AbstractKnowledgeGraph, a systematic knowledge graph that concentrate on abstract thing including abstract entity and action. 抽象知识图谱,目前规模50...目标于抽象知识,包括抽象...
  • Python实现抽象基类的3三种方法

    千次阅读 2017-10-28 12:11:33
    Python实现抽象基类的3三种方法
  • JavaScript是一种动态类型的脚本语言

    千次阅读 2018-11-25 04:16:01
    JavaScript是一种动态类型的脚本语言;在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。 ...
  • java抽象类和抽象方法

    千次阅读 2021-02-27 12:26:26
    抽象类的使用一般通过继承来实现二、为什么需要抽象类和抽象方法引用抽象方法和抽象类,是java提供的一种语法工具,引导使用者正确的使用它们,减少误用。相当于对子类进行一定限制。抽象类和抽象方法的语法规则...
  • 三个世界现实世界信息世界计算机世界从数据模型角度看三个世界E-R图总结 现实世界 现实世界也就是客观存在的世界,这概念在数据库中指的是对某事物的描述,描述其各方面特征以及是否与其他事物存在联系 信息...
  • 记录个咸鱼大学生三个月的奋进生活006复习Java(抽象和接口)抽象(abstract)接口(interface)学习Java面试题(Redis相关面试题)健身照片分享 复习Java(抽象和接口) 抽象(abstract) 抽象方法 只有方法声明...
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • 定义一个抽象的&quot;Role&quot;类,有姓名,年龄,性别等成员变量 1)要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有), 再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 821,481
精华内容 328,592
关键字:

一种抽象类型包括那三个

友情链接: flash-dump.zip