精华内容
下载资源
问答
  • 数据类型: 是一个值的集合和定义在此集合上一组操作的总称。 数据类型有两种:简单型和结构类型。...抽象数据类型(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就是定义在这个数据结构上的操作集。当在讨论数据结构的时候,都是从抽象数据类型出发的,也就是说数据结构和它的操作集是一个整体。

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

    展开全文
  • 实验项目名称: 抽象数据类型的实现 实验项目性质: 设计性实验 所属课程名称: 数据结构 以教材中讨论的各种抽象数据类型为对象,利用C语言的数据类型表示和实现其中某个抽象数据类型。 本资源包括了可执行文件、源...
  • 抽象数据类型三元组Triplet的表示和实现

    抽象数据类型三元组Triplet的表示和实现

    //-------------------------采用动态分配的顺序存储结构----------------------------------

    #defined   OVERFLOW  0;

    #defined   OK  1;

    #defined   ERROR  1;

    typedef      ElemType      *Triplet;

    //-------------------------基本操作的函数原型说明-----------------------------------------

    Status InitTriplet(Triplet &T, ElemType v1,ElemType v1ElemType v1); //初始条件:三个ElemType 类型的元素 操作结果:构造一个ElemType 类型的三元组

    Status DestroyTriplet (Triplet &T);//初始条件:三元组存在  操作结果:三元组被销毁

    Status  Get(Triplet T,int i, ElemType &e); //初始条件:三元组存在 操作结果:取出存在于第i个位置的元素

    Status  Put(Triplet &T,int i, ElemType e);//初始条件:三元组存在 操作结果:在第i个位置存入值为e的元素

    Status  IsAscending(Triplet T);//初始条件:三元组存在 操作结果:按升序排列

    Status   IsDescending(Triplet T);//初始条件:三元组存在 操作结果:按降序排列

    Status Max(Triplet T,ElemType &e);//初始条件:三元组存在 操作结果:返回三元组中值最大的数

    Status Min(Triplet T,ElemType &e);//初始条件:三元组存在 操作结果:返回三元组中最小的数

    //-----------------------基本操作的实现-------------------------------------------------------

    //------------------------我的代码---------------------------------------------------------------

    Status InitTriplet(Triplet &TElemType v1,ElemType v1ElemType v1){

    T=malloc(3*sizeof(ElemType));

    T[1]=v1;

    T[2]=v2;

    T[3]=v3;

    return T;

    }


    Status DestroyTriplet (Triplet &T){

    free(T);

    }


    Status  Get(Triplet T,int i, ElemType &e){

    e=T[i-1];

    return OK;

    }


    Status  Put(Triplet &T,int i, ElemType e){

    int k;

    k=0;

    if(i<1||i>4)

    return ERROR;

    for(k=i-1;k<4;k++)

    {

    T[k+1]=T[k];

    }

    T[i-1]=e;

    return OK;

    }


    ps:

    未考虑增加了一个内存空间,应该如何分配内存空间。是给T重新分配4个存储空间,还是再分配一个存储空间存T中第4个元素。


    Status  IsAscending(Triplet T){

    int i;

    i=0;

    int *p;

    for(i=0;i<3;i++)

    {

    p=T[I];

    if(T[i]>T[i+1])

    {

    T[i]=[i+1];

    T[i+1]=&p;

    }

    }

    return OK;

    }


    Status   IsDescending(Triplet T){

    int i;

    i=0;

    int *p;

    for(i=0;i<3;i++)

    {

    p=T[I];

    if(T[i]<T[i+1])

    {

    T[i]=[i+1];

    T[i+1]=&p;

    }

    }

    return OK;


    }


    Status Max(Triplet T,ElemType &e){

    int i;

    i=0;

    int *p;

    p=0;

    for(i=0;i<3;i++)

    {

    if(T[i]>&p)

    {

    p=T[I];

    }

    }

    return OK;

    }


    Status Min(Triplet T,ElemType &e){

    int i;

    i=0;

    int *p;

    p=0;

    for(i=0;i<3;i++)

    {

    if(T[i]<&p)

    {

    p=T[I];

    }

    }

    return OK;

    }



    //------------------------------书上的代码-------------------------------------------------------

    Status InitTriplet(Triplet &T, ElemType v1,ElemType v1ElemType v1){

    T=ElemType *malloc(3*sizeof(ElemType));

    if(!T)

    exit(OVERFLOW);

    T[1]=v1;

    T[2]=v2;

    T[3]=v3;

    return OK;

    }



    Status DestroyTriplet (Triplet &T){

    free(T);

    T=NULL;

    return OK;

    }


    Status  Get(Triplet T,int i, ElemType &e){

    if(i<1||i>3)

    return ERROR;

    e=T[i-1];

    return OK;

    }


    Status  Put(Triplet &T,int i, ElemType e){

    int k;

    k=0;

    if(i<1||i>3)

    return ERROR;

    for(k=i-1;k<4;k++)

    {

    T[k+1]=T[k];

    }

    T[i-1]=e;

    return OK;

    }


    ps:

    顺序存储的存储结构,存储大小不可变。当给数组中插入新的元素时,不用将挪动数组中的其他元素,只要覆盖掉想要插入位置的元素就好了。


    Status  ascending(Triplet T){}


    Status   descending(Triplet T){}


    Status Max(Triplet T,ElemType &e){}


    Status Min(Triplet T,ElemType &e){}




    展开全文
  • 抽象数据类型--数据机构实验。里面有完整代码,可以运行,希望对大家有用。
  • 抽象数据类型的实例

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

    重新学习数据结构,主要了解了一些关于数据结构的一些相关的概念;

    数据结构是一种带结构的数据集合;它包括逻辑结构还有存储结构,然后学习了一下数据类型的表示以及实现,虽然在C语言基础中可以常常看到结构体,但是到今天才明白什么是用户建立自己的数据类型这句话,以下就是构建复数这样一个结构体的数据类型;

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

    • 数据类型一般指同一类数据的全体,用于高级语言中说明数据的分类,是一种属性,限制了该数据的变化范围和可进行的操作。

    • 数据结构则是分为逻辑结构和物理结构,侧重数据以及数据之间的联系方式,表示数学模型极其操作到计算机上的应用。

    总体就说 ADT 具体化 为数据结构 再可细化为数据类型。
    下面介绍一个ADT的具体代码实现
    (学习了复数的抽象数据类型实例
    头文件:

    //complex.h头文件内容
    #ifndef COMPLEX_H
    #define COMPLEX_H
    typedef struct 
    {
    	float Realpart;
    	float Imagepart;
    }complex;
    //创建一个复数
    complex Creat(float x, float y);
    //获得复数的实部
    float Getreal(complex c);
    //获得数据的虚部
    float Getimage(complex c);
    //求两个复数的和sum
    complex add(complex c1, complex c2);
    //求两个复数的差difference
    complex difference(complex c1, complex c2);
    #endif
    
    

    源代码:

    #define _CRT_SECURE_NO_WARNINGS
    #include"stdio.h"
    #include"stdlib.h"
    #include"complex.h"
    void main(void)
    {
    	complex c1,c2,c3,c4;
    	c1= Creat(1, 1);
    	c2 = Creat(2, 2);
    	Getreal(c1);
    	Getimage(c2);
    	c3=add(c1, c2);
    	c4=difference(c1, c2);
    	printf("c1=%f+(%f)i\n", c1.Realpart, c1.Imagepart);
    	printf("c2=%f+(%f)i\n", c2.Realpart, c2.Imagepart);
    	printf("c3=%f+(%f)i\n", c3.Realpart, c3.Imagepart);
    	printf("c4=%f+(%f)i\n", c4.Realpart, c4.Imagepart);
    	system("pause");
    }
    //创建一个复数
    complex Creat(float x, float y)
    {
    	complex c;
    	c.Realpart = x;
    	c.Imagepart = y;
    	return c;
    }
    //获得复数的实部
    float Getreal(complex c)
    {
    	return c.Realpart;
    }
    //获得数据的虚部
    float Getimage(complex c)
    {
    	return c.Imagepart;
    }
    //求两个复数的和sum
    complex add(complex c1, complex c2)
    {
    	complex c;
    	c.Realpart = c1.Realpart + c2.Realpart;
    	c.Imagepart = c1.Imagepart + c2.Imagepart;
    	return c;
    }
    //求两个复数的差difference
    complex difference(complex c1, complex c2)
    {
    	complex c;
    	c.Realpart = c1.Realpart - c2.Realpart;
    	c.Imagepart = c1.Imagepart - c2.Imagepart;
    	return c;
    }
    
    
    展开全文
  • 如已看过抽象数据类型定义,可直接跳过定义。 抽象数据类似的定义 抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过固有数据类型(高级编程语言中...

    在学习数据结构类型时,首先遇到的一个难点即是如何理解抽象数据结构类型。通过阅读多个博客,将个人理解总结如下:

    如已看过抽象数据类型定义,可直接跳过定义。
    抽象数据类似的定义
    抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。

    如何理解?
    1, 抽象数据类型 = 逻辑结构+数据运算。逻辑结构不涉及数据在计算机中具体的实现和存储,这些操作是由存储结构决定的,这就是说,抽象数据类型只需考虑问题本身即可。

    均以买衣服的例子进行解释:在买衣服砍价时,自己需要将砍价这个事情抽象为语句(即构建模型)表达出来(操作),而不需要考虑卖家能否接受自己说的话(不需要考虑计算机如何处理)。

    2,类型是指一类数据。基本数据类型被人做是最基本地,不可再划分的数据,一般就是整形、浮点型、以及字符型。抽象数据类型是由若干基本数据类型归并之后形成的一种新的数据类型,这种类型由用户定义,功能操作比基本数据类型更多,一般包括结构体和类。

    例:要表达的语句中,应包含“动词”,“衣服名称”,“价格数字”等类型。也就是说,说的语句是由许多基本类型组成。

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

    例:我将砍价的语句说出来目的就是为了能够便宜点买衣服,将话说出来也便于卖家了解我的想法(便于计算机进行处理)。

    再举一个别的博客里面的例子:
    构建抽象数据类型复数(e1+e2i)

    这里是引用

    通过上例可知,问题是要将复数加法描述出来,而抽象数据类型就是在这种形式化的描述下把数据的组成和如何操作的问题描述清楚,且没有涉及到具体的计算机具体实现的一些问题。从数据对象中看出,抽象数据类型是由实数数据类型组成。另外,右侧c++代码是在通过抽象数据类型ADT描述清楚问题本身后,然后在此基础上设计高级程序语言中具体实现的过程,在这个阶段涉及到了计算机的具体实现和存储等因素。从此可知,该例子也符合上文中提出的3点对抽象数据类型理解的看法。

    参考博客1
    参考博客2
    百度百科

    展开全文
  • 代码实现了抽象数据类型树的各个基本操作,包括遍历等
  • 此计算器主要是应用了数据结构中的抽象数据类型,进行了设计与实现,压缩包中附有完整代码
  • 抽象数据类型(ADT)入门(一)

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

    万次阅读 多人点赞 2014-03-16 16:03:56
    一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 关键:使用它的人...
  • 抽象数据类型算法;学习目的*了解抽象数据类型的表示与实现;掌握算法的特征和算法分析的方法;1.3 抽象数据类型的表示和实现;1.3抽象数据类型的表示和实现(P9;1. 预定义常量和类型 //函数结果状态代码 #define TRUE 1 ...
  • 图的抽象数据类型实现和数据结构课程设计 打包一起的 一起花了十几天做的 里面什么都有了 实验报告 可执行文件 源代码 老师两个都给了优秀
  • 从基本数据类型到抽象数据类型

    千次阅读 2018-07-03 14:49:40
    在冯 · 诺依曼体系结构中,程序代码和数据都是以二进制存储的,因此,对计算机系统和硬件本身而言,数据类型的概念其实是不存在的。机器指令和汇编语言中,数据对象是用二进制数表示的,内存里存的都是二进制,对于...
  • 广工,数据结构的抽象数据类型-树,有需要的童鞋可以下载查看,里面的资料齐全,可以直接交给老师即可
  • 抽象数据类型ADT

    千次阅读 2013-07-30 17:40:22
    抽象数据类型(abstruct data type,ADT) ADT的本质其实就是一种对数据结构或算法的描述语言,用“自然语言+编程语言格式”的方式对需要构造的模型来进行描述,有点类似伪代码,其实也可以认为是伪代码的说~~ 然而它却...
  • java算法:抽象数据类型ADT

    千次阅读 2012-10-26 12:45:20
    java算法:抽象数据类型ADT 开发有关系数据和处理这些数据的方法的抽象数据模型是用计算机解决问题的过程中必不可少的步骤。 使用抽象数据类型,可以很好的把任何具体的数据结构表示与算法分开,利于研究算法。 ...
  • 体系结构课会用到的 共勉之乎 抽象数据类型的是想方法和OO的思想很像,附送该种设计风格的逻辑视图和开发视图
  • 抽象数据类型(ADT)

    千次阅读 2018-09-17 19:07:13
    一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 关键:使用它的人...
  • C语言 抽象数据类型ADT

    千次阅读 2016-05-22 14:15:20
    一、概述 在嵌入式系统开发中,随着系统功能要求越来越多,除了硬件系统不断扩展外,芯片中软件设计的规模也越来大,算法越来越复杂,所以需要对程序结构进行良好设计,...抽象数据类型概念的引入,降低了大型软件设计
  • python语言下栈的抽象数据类型
  • 抽象数据类型:复数COMPLEX

    千次阅读 2019-11-05 10:56:06
    抽象数据类型:复数COMPLEX:分别对实部和虚部在结构体进行定义。 ADT COMPLEX{ 数据对象:D={real,image|real∈实数,image∈实数} 数据关系:R={<real,image>} 基本操作: InitComplex(&C) 操作结果:...
  • C语言实现抽象数据类型(ADT)

    千次阅读 2020-12-22 20:49:02
    C语言实现抽象数据类型(ADT)什么是抽象数据类型(ADT)C语言通过怎样的方式来实现ADT举例前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结学习目标:学习内容:学习时间:学习产出: 什么是抽象数据类型...
  • 抽象数据类型(三元组ADT、复数四则运算) 数据结构 湖南大学
  • 1.3抽象数据类型的表示与实现

    千次阅读 多人点赞 2015-12-06 15:00:54
    记得大二的时候学习严蔚敏大神的《数据结构》,满本书的抽象结构,抽象这个,抽象那个,直接整蒙了。最困难的就是概念本来就晦涩难懂,而且书里面也没有可以直接运行的代码,真头疼。好在最近发现高一凡编写的《数据...
  • 数据结构和抽象数据类型

    千次阅读 2016-01-15 16:41:31
    数据结构呢,我们总是为了完成一个功能或者目的写程序,但不管什么程序、代码实际上都是一些指令的集合,说白了就是在描述“怎么做”,而光知道怎么做还只是问题的一半,还要知道“做什么”,也就是刚才那些指令的...
  • HIT 软件构造 抽象数据类型

    千次阅读 2019-06-12 17:14:42
    抽象数据类型(ADT) ADT的特性:表示泄漏、抽象函数AF、表示不变量 将ADT的操作分类 你可以从下图来理解 T是ADT本身,t;是其他类型,*和+说的都是出现次数,和正则是一样的 creator 构造器 直接构造出一个新的...
  • 本设计是对抽象数据类型--树的实现,采用了两种存储结构。分别实现了树的所有基本操作。本设计比较人性化的地方在于测试数据内嵌在程序当中,用户无需繁琐地输入建立树的数据。本程序提供了八棵树的数据作为测试,...
  • C++:实现LinkedList 学习抽象数据类型

    千次阅读 2016-09-04 17:36:18
    C++:实现LinkedList 学习抽象数据类型标签(空格分隔): c++ 数据结构 作者:陈小默C实现LinkedList 学习抽象数据类型 定义需求 作为类 作为List 作为栈stack 作为队列 定义模版 定义数据结构 声明类 方法实现 ...
  • 抽象数据类型的表示与实现

    千次阅读 2016-09-28 17:05:30
    预定义常量和类型 //函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INEASIBLE -1 #define OVERFLOW -2 ...数据结构的表示(存储结构)用类型定义(typedef)描述。数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 502,785
精华内容 201,114
关键字:

抽象数据类型代码