精华内容
下载资源
问答
  • 抽象数据结构

    千次阅读 2020-01-23 09:49:40
    1.抽象数据类型定义 抽象数据类型( Abstract Data Type,ADT)是带有一组操作的一些对象的集合。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。 2.抽象数据类型表示...

    1.抽象数据类型定义

           抽象数据类型( Abstract Data Type,ADT)是带有一组操作的一些对象的集合。它通常是对数据的某种抽象,定义了数据的取值范围及其结构形式,以及对数据操作的集合。

    2.抽象数据类型表示方法

           抽象数据类型是一个数学模型以及定义在其上的一组操作组成,因此,抽象数据类型一般通过数据对象、数据关系以及基本操作来定义,即抽象数据类型三要素是(D,S,P)

           ADT抽象数据类型名{

           数据对象:<数据对象的定义>

           数据关系:<数据关系的定义>

           基本操作:<基本操作的定义>

           } ADT抽象数据类型名

    3.数据结构定义

      数据结构(Data Structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。

    4.数据结构和抽象数据类型之间的联系和区别

           数据结构定义为一个二元组(D,S),即两个集合,D是数据元素的集合,S是数据元素之间一个或多个关系的集合。

           抽象数据类型本质是“数据类型”,与计算机相关,涉及数据的存储及如何用存储来反应数据元素之间的关系。它定义为一个三元组(D,S,P),加上的P是定义的一组针对存储的数据操作(如插入,删除,排序等)。


      

    展开全文
  • 就数据结构中的struct来说,其是定义抽象数据结构类型的重要手段,但是在看书的过程中,遇到了很多的变种,所以总结一下,以防混淆。 int a; int b[100]; typedef int MYint;  首先紧跟struct之后的肯定是该...

           就数据结构中的struct来说,它是定义抽象数据结构的重要手段,但是在看书的过程中,遇到了很多的变种,所以总结一下,以防混淆。


    int a;
    int b[100];
    typedef int MYint;


           首先紧跟struct之后的肯定是该抽象数据类型的名称,类比于"int',若无typedef,则在结尾处分号之前的activity就类比于a,b[100],属于数据类型的实例化对象,若有typedef,则在结尾处分号之前的activity就类比于MYint,属于数据类型的类型别名



    /***************************************************************************  
     *  @file       main.cpp  
     *  @author     MISAYAONE  
     *  @date       28  May 2017  
     *  @remark     28  May 2017   
     *  @theme      Data struct   
     ***************************************************************************/ 
    
    
    int main(int argc, char** argv)
    {
    
    	//定义了一个数据结构Act
    	struct Act
    	{
    		int start;
    		int end;
    	};
    
    	//数据结构 Act 及其实例 activity2[]数组
    	struct Act
    	{
    		int start;
    		int end;
    	} activity2[100];
    
    	//数据结构 Act 及其实例 activity3
    	struct Act
    	{
    		int start;
    		int end;
    	} activity3;
    
    	//给数据结构Act 定义了一个类型别名 activity4
    	typedef struct Act
    	{
    		int start;
    		int end;
    	} activity4;
    
    	//给无名数据结构定义了类型别名 activity5
    	typedef struct
    	{
    		int start;
    		int end;
    	} activity5;
    }
    


    展开全文
  • 数据结构(15)栈的定义抽象定义

    千次阅读 2016-03-17 23:13:56
    栈的抽象定义导言从数据结构角度上看,栈也是线性表,特殊在于,其基本操作是线性表的子集,可称为限定性的数据结构。 从数据类型角度看,是与线性表大不相同的抽象数据类型栈定义栈(stack)又名堆栈,它是一种...

    导言

    从数据结构角度上看,也是线性表,特殊在于,其基本操作是线性表的子集,可称为限定性的数据结构
    从数据类型角度看,是与线性表大不相同的抽象数据类型

    定义

    栈(stack)又名堆栈,它是一种限定在表尾进行插入或删除操作的线性表。表尾被称为栈顶,相对地,把另一端称为栈底。
    不含元素的空表称为空栈。
    向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

    假设栈 S=(a1,a2,...,a3) ,则称 a1 为栈底元素, an 为栈顶元素。栈中元素按 a1,a2,...,an 的次序进栈,退栈的第一个元素应该为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的,如下所示:

    栈的示意图
    这里写图片描述

    所以栈是后进先出(last in first out)的线性表(LIFO结构)。

    举两个例子来理解:

    假设你要洗盘子,给你带盘子过来的人,是不时的一直把盘子叠加在你的面前,即每次带来一个要洗的盘子,总是放在等待洗的盘子的最上方,而你洗盘子的时候,是从那一堆未洗的盘子中选出最上方的进行清洗,就是这个道理。

    栈的抽象定义

    ADT Stack {
        数据对象:D={ai| ai∈ElemSet, i=1,2,...,n, n≥0 }
        数据关系:R1={ <ai-1,ai>| ,ai-1,ai∈D, i=2,...,n }
            约定an端为栈顶,a1端为栈底。
    基本操作:
    InitStack(&S) 
        操作结果:构造一个空栈 S。
    DestroyStack(&S)
        初始条件:栈 S 已存在。
        操作结果:栈 S 被销毁。 
    ClearStack(&S)
        初始条件:栈 S 已存在。
        操作结果:将 S 清为空栈。
    StackEmpty(S)
        初始条件:栈 S 已存在。
        操作结果:若栈 S 为空栈,则返回TRUE,否则返回FALSE。
        判定栈是否为空栈是栈在应用程序中经常使用的操作,通常以它作为循环结束的条件。  
        StackLength(S)
        初始条件:栈 S 已存在。
        操作结果:返回栈 S 中元素个数,即栈的长度。
    GetTop(S, &e)
        初始条件:栈 S 已存在且非空。
        操作结果:用 e 返回S的栈顶元素。
        这是取栈顶元素的操作,只以 e 返回栈顶元素,并不将它从栈中删除。 
    Push(&S, e)
        初始条件:栈 S 已存在。
        操作结果:插入元素 e 为新的栈顶元素。
    Pop(&S, &e)
        初始条件:栈 S 已存在且非空。
        操作结果:删除 S 的栈顶元素,并用 e 返回其值。
    StackTraverse(S, visit( ))
        初始条件:栈 S 已存在且非空,visit( )为元素的访问函数。
        操作结果:从栈底到栈顶依次对S的每个元素调用函数visit( ),
            一旦visit( )失败,则操作失败。
    }
    
    
    展开全文
  • 什么是数据结构抽象数据类型及面向对象概念模板算法定义.pdf
  • 线性表的讲解,分析。 线性表的抽象数据类型定义 线性表的存储结构 线性表的应用
  • 抽象数据类型定义(ADT)

    万次阅读 多人点赞 2014-03-16 16:03:56
    一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 关键:使用它的人...

    一、抽象数据类型定义(ADT)

    作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。

    定义:一个数学模型以及定义在该模型上的一组操作。

    关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。

    例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些操作:插入一个元素、删除一个元素等。

    抽象数据类型分类
    原子类型值不可分解,如int
    固定聚合类型值由确定数目的成分按某种结构组成,如复数
    可变聚合类型值的成分数目不确定如学生基本情况

    抽象数据类型表示法:

    一、

    三元组表示:(D,S,P)

    其中D是数据对象,S是D上的关系集,P是对D的基本操作集。

    二、书中的定义格式:

    ADT 抽象数据类型名{

    数据对象:<数据对象的定义>

    数据关系:<数据关系的定义>

    基本操作:<基本操作的定义>

    }ADT 抽象数据类型名

    例:线性表的表示

    名称线性表 
    数据对象D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}任意数据元素的集合
    数据关系R1={<ai-1,ai>| ai-1,ai(- D,i=2,...,n}除第一个和最后一个外,每个元素有唯一的直接前趋和唯一的直接后继
    基本操作ListInsert(&L,i,e)L为线性表,i为位置,e为数据元素。
    ListDelete(&L,i,e)
    ...

    二、类C语言语法

    类C语言语法示例
    1、预定义常量和类型#define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define INFEASIBLE -1
    #define OVERFLOW -2
    typedef in Status; //Status是函数的类型,其值是函数结果状态代码。
    2、数据结构的存储结构typedef ElemType first;
    3、基本操作的算法

    函数类型 函数名(函数参数表){
    //算法说明
    语句序列
    }//函数名

    4、赋值语句简单赋值:变量名=表达式;
    串联赋值:变量名1=变量名2=...=变量名k=表达式;
    成组赋值:(变量名1,...,变量名k)=(表达式1,...,表达式k);
    结构名=结构名;
    结构名=(值1,...,值k);
    变量名[]=表达式;
    变量名[起始下标..终止下标]=变量名[起始下标..终止下标]; 
    交换赋值:变量名<-->变量名;
    条件赋值:变量名=条件表达式?表达式?表达式T:表达式F
    5、选择语句

    1、if(表达式) 语句;
    2、if(表达式) 语句;
    else 语句;
    3、switch(表达式){
    case 值1:语句序列1;break;

    ...
    case 值n:语句序列n;break; 
    default:语句序列n+1;break; 
    }
    4、switch{
    case 条件1:语句序列1;break;

    ...
    case 条件n:语句序列n;break; 
    default:语句序列n+1;break; 
    }

    6、循环语句for(赋初值表达式;条件;修改表达式序列)语句;
    while(条件)语句;
    do{ 语句序列}while(条件);
    7、结束语句

    return [表达式];
    return; //函数结束语句
    break; //case结束语句
    exit(异常代码); //异常结束语句

    8、输入和输出语句scanf([格式串],变量1,...,变量n);
    9、注释//文字序列
    10、基本函数max(表达式1,...,表达式n)
    min,abs,floor,ceil,eof,eoln
    11、逻辑运算&&与运算;||或运算

    例:线性表的实现:
    ADT List{

    数据对象: D={ai| ai(-ElemSet,i=1,2,...,n,n>=0}

    数据关系: R1={<ai-1,ai>| ai-1,ai(- D,i=2,...,n}

    基本操作:

    InitList(&L)
    DestroyList(&L)
    ListInsert(&L,i,e)
    ListDelete(&L,i,&e)

    }ADT List

    ListInsert(List &L,int i,ElemType e)

    {if(i<1||i>L.length+) return ERROR;

    q=&(L.elem[i-1]);

    for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;

    *q=e;

    ++L.length;

    return OK;

    }

    下面是C语言编译通过的示例

    #define ERROR 0 
    #define OK 1 
    struct STU
    { char name[20];
    char stuno[10]; 
    int age; int score; 
    }stu[50]; 
    struct LIST 
    { struct STU stu[50]; 
    int length; 
    }L; 

    int printlist(struct LIST L)
    { int i;
    printf("name stuno age score/n"); 
    for(i=0;i<L.length;i++) 
    printf("%s %s/t%d/t%d/n", L.stu[i].name, L.stu[i].stuno, L.stu[i].age, L.stu[i].score); 
    printf("/n"); 
    }

    int listinsert(struct LIST *L,int i,struct STU e) 
    { struct STU *p,*q; 
    if (i<1||i>L->length+1) 
    return ERROR; 
    q=&(L->stu[i-1]); 
    for(p=&L->stu[L->length-1];p>=q;--p) 
    *(p+1)=*p; *q=e; ++L->length; 
    return OK; 
    }/*ListInsert Before i */

    main() 
    { struct STU e; 
    L.length=0; 
    strcpy(e.name,"zmofun"); 
    strcpy(e.stuno,"100001"); 
    e.age=80; 
    e.score=1000; 
    listinsert(&L,1,e); 
    printlist(L); 
    printf("List length now is %d./n/n",L.length);

    strcpy(e.name,"bobjin"); 
    strcpy(e.stuno,"100002"); 
    e.age=80; 
    e.score=1000; 
    listinsert(&L,1,e); 
    printlist(L); 
    printf("List length now is %d./n/n",L.length); 
    }

    展开全文
  • 本章主要介绍线性表的定义抽象数据类型,线性表的顺序存储结构以及每种线性表操作在顺序存储结构上的具体实现,链接存储的概念,线性表的链接存储结构以及每种线性表操作在链接存储结构上的具体实现等内容。
  • 基于C语言的二叉树抽象数据结构的实现,呕心沥血制作啊!有需要的同学可以下来参考参考!
  • 1、串是由一个或多个字符组成的有序数列,又叫字符串。 2、空格串是只包含空格的串,有长度有内容,而且可以不止一个空格。 3、子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应的包含子串的...
  • 摘自:大话数据结构一、数据二、数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。分类:1、逻辑结构 1)集合结构:同属于一个集合,它们之间没有其他关系 2)线性结构:数据元素之间是一对一的关系...
  • 在学习数据结构类型时,首先遇到的一个难点即是如何理解抽象数据结构类型。通过阅读多个博客,将个人理解总结如下: 如已看过抽象数据类型定义,可直接跳过定义。 抽象数据类似的定义 抽象数据类型(Abstract Data ...
  • 如何理解数据结构中的抽象数据类型?

    万次阅读 多人点赞 2018-09-04 18:49:23
    抽象数据类型的标准格式 ADT 抽象数据类型名 { Data: 数据元素之间逻辑关系的定义;...抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。 例如,int类型的数据表示的...
  • 数据结构抽象数据类型

    千次阅读 2017-12-19 14:19:27
    抽象数据类型的定义可以由一种数据结构定义在其上的一组操作组成,数据结构又包括数据元素以及元素之间的关系。因此抽象数据元素类型一般由元素、关系及操作三种元素来定义。(D,R,P) D 是数据对象、R是D上的...
  • # include<stdio.h> #include<iostream> #include <iomanip> using namespace std; # include<stdlib.h> typedef struct{ float Realpart;//实部 float Imagepart;...float GetReal
  • java数据结构——抽象数据类型

    千次阅读 2019-02-18 12:24:51
    数据得抽象是用抽象数据类型来实现的,ADT是这个集合和定义在这集合上的一组数据操作,它不包括计算机数据存储:隐藏了数据存储结构并且不涉及实现结构的数据类型。 java中抽象数据类型的描述:1.抽象类...
  • 数据结构、数据类型、抽象数据类型之间的区别

    千次阅读 多人点赞 2019-11-03 20:15:37
    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。) 逻辑结构指反映数据元素之间的逻辑关系的数据结构,...
  • 第11&12章 数据结构抽象数据类型(Data Structure & Abstract Data Type) 教学目标通过本章的学习同学们应该能够:定义数据结构了解其分类抽象数据类型的定义熟练掌握栈和队列的原理及应用广义表的定义及操作树与...
  • 数据结构(C语言版) 严蔚敏 吴伟民 设计练习 线性表的定义构造 代码块: #include <stdio.h> #include <stdlib.h> //Function result status code #define TRUE 1 #define FALSE 0 #define OK 1 #...
  • 抽象数据结构(ADT)的介绍

    千次阅读 2018-11-30 09:42:19
    抽象数据类型(ADT(abstract data type))是一些操作的集合。抽象数据类型是数学的抽象;在ADT的定义中根本没有涉及如何实现操作的集合。 整数,实数及布尔量有与它们相关的操作,而抽象数据类型也有自己额相关...
  • 数据结构抽象数据类型

    千次阅读 2016-01-15 16:41:31
    数据结构呢,我们总是为了完成一个功能或者目的写程序,但不管什么程序、代码实际上都是一些指令的集合,说白了就是在描述“怎么做”,而光知道怎么做还只是问题的一半,还要知道“做什么”,也就是刚才那些指令的...
  • 图的抽象数据类型实现和数据结构课程设计 打包一起的 一起花了十几天做的 里面什么都有了 实验报告 可执行文件 源代码 老师两个都给了优秀
  • 数据结构抽象数据类型

    千次阅读 2019-05-12 22:28:09
    抽象数据类型(ADT)概念 以面向对象编程为例,在创建一个对象的时候,要给定这个对象有哪些属性以及行为,并且可以通过一套接口描述说明这个对象用来干什么的,在给定输入的时候,产生相应的结果,并不需要知道其...
  • 抽象数据类型有两个重要特征:数据抽象数据封装数据抽象所谓数据抽象是指用ADT描述程序处理的实体时,强调的是其本质的特征,无论内部结构如何变化,只要本质特性不变,就不会影响其外部使用。例如,在程序设...
  • 这是数据结构中的常见数据类型定义,里面实现了集合的一些基本操作,例如交并等。
  • 学习数据结构的第一天,主要了解了一些关于数据结构的一些相关的概念; 数据结构是一种带结构的数据集合;它包括逻辑结构还有存储结构,然后学习了一下数据类型的表示以及实现,虽然在C语言基础中可以常常看到...
  • 什么是抽象数据类型(Abstract Data Type,ADT) 定义:是指一个数学模型以及定义在这个模型上的一组操作。 包括三个部分: ​ 由用户定义,从问题抽象出数据模型(逻辑结构) ​ 定义在数据模型上的一组抽象运算...
  • 抽象数据类型(abstract data type,ADT)是指一个数学模型以及定义在该模型上的一组操作。 ADT 抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作:<基本操作的定义> ...
  • 我花了一夜用数据结构给女朋友写个H5走迷宫游戏

    万次阅读 多人点赞 2019-09-10 23:27:18
    而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,656
精华内容 169,062
关键字:

抽象数据结构的定义

数据结构 订阅