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

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

    题记:先捂上眼睛,不想算法,不想怎么计算时间复杂度,先刷刷“单纯”的数据结构


    抽象数据类型 Abstract Data Type 

    抽象数据类型的定义可以由一种数据结构和定义在其上的一组操作组成,数据结构又包括数据元素以及元素之间的关系。因此抽象数据元素类型一般由元素、关系及操作三种元素来定义。(D,R,P) D 是数据对象、R是D上的关系集、P 是对D的基本操作集

    抽象数据类型的定义格式


    ADT 抽象数据类型名

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

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

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

    }ADT 抽象数据类型名


    嗯,DRP 是程序员,永远的朋友。




    展开全文
  • 抽象数据类型三元组Triplet的表示和实现。 数据类型是一值的集合和定义在这值集上的一组操作的总称。按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,原子类型的值是不可分解...

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

    数据类型是一个值的集合和定义在这个值集上的一组操作的总称。按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,原子类型的值是不可分解的;另一类是结构类型,结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且它的成分可以是非结构的,也可以是结构的。

    抽象数据类型(Abstract Data Type,简称ADT)是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

    ** 抽象数据类型三元组Triplet的表示和实现
    
    //- - - - - - - - -采用动态分配的顺序存储结构- - - - - -
    typedef ElemType * Triplet; //由 InitTriplet 分配3个元素存储空间
    
    
    
    //- - - - - - - - -基本操作的函数原型说明- - - - - -
    Status InitTriplet (Triplet &T, ElemType v1, ElemType v2, ElemType v3);
    	// 操作结果:构成了三元组T,元素 e1, e2 和 e3 分别被赋以参数 v1,v2 和 v3 的值。
    
    Status DestroyTriplet (Triplet &T);
    	// 操作结果:三元组 T 被销毁。
    
    Status Get (Triplet T, int i, ElemType &e);
    	// 初始条件:三元组 T 已经存在,1<=i<=3。
    	// 操作结果:用 e 返回 T 的第 i 元的值。
    
    Status Put (Triplet &T, int i, ElemType e);
    	// 初始条件:三元组 T 已存在,1<=i<=3.
    	// 操作结果:改变 T 的第 i 元的值为e。
    
    Status IsAscending (Triplet T);
    	// 初始条件:三元组 T 已存在。
    	// 操作条件:如果 T 的3个元素按升序排列,则返回1,否则返回0。
    
    Status IsDescending (Triplet T);
    	// 初始条件:三元组 T 已存在。
    	// 操作条件:如果 T 的3个元素按降序排列,则返回1,否则返回0。
    
    Status Max (Triplet T, ElemType &e);
    	 // 初始条件:三元组 T 已存在。
    	 // 操作结果:用 e 返回 T 的3个元素中的最大值。
    
    Status Min (Triplet T, ElemType &e);
    	 // 初始条件:三元组 T 已存在。
    	 // 操作结果:用 e 返回 T 的3个元素中的最小值。
    
    
    
    
    ** malloc函数是在内存的动态存储区中分配一个长度为size的连续空间。
    ** 其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。
    ** malloc的语法是:指针名 =(数据类型 * )malloc(长度); 其中(数据类型*)表示指针。
     
    //- - - - - - - - - - - - -基本操作的实现- - - - - - - - - -
    Status InitTriplet (Triplet &T, ElemType v1, ElemType v2, ElemType v3) {
    	// 构造三元组 T,依位置 T 的 3 个元素的初值为 v1,v2,v3。
    	T = (ElemType * ) malloc (3 * sizeof(ElemType));     // 分配 3 个元素的存储空间
    	if (!T) exit(OVERFLOW);     // 分配存储空间失败
    	T[0] = v1;	T[1] = v2;	T[2] = v3;
    	return OK;
    }// InitTriplet
    
    Status DestroyTriplet (Triplet &T) {
    	// 销毁三元组 T。
    	free(T);		T = NULL;
    	return OK;
    }// DestroyTriplet
    
    Status Get (Triplet T, int i, ElemType &e) {
    	// 1<=i<=3,用 e 返回 T 的第 i元的值。
    	if (i<1 || i>3) return ERROR;
    	e = T[ i-1 ];
    	return OK;
    }// Get
    
    Status Put (Triplet &T, int i, ElemType e) {
    	// 1<=i<=3,置 T 的第 i 元的值为e。
    	if ( i<1 || i>3 ) return ERROR;
    	T[ i-1 ] = e;
    	return OK;
    }// Put
    
    Status IsAscending (Triplet T) {
    	// 如果 T 的3个元素按升序排列,则返回1,否则返回0。
    	return (T[0] <= T[1]) && (T[1] <= T[2]);
    }// IsAscending
    
    Status IsDescending (Triplet T) {
    	// 如果 T 的3个元素按降序排列,则返回1,否则返回0。
    	return (T[0] >= T[1]) && (T[1] >= T[2]);
    }// IsDescending
    
    Status Max (Triplet T, ElemType &e) {
    	// 用 e 返回指向 T 的最大元素的值。
    	e = (T[0] >= T[1]) ? ((T[0] >= T[2]) ? T[0] : T[2]) : ((T[1] >= T[2]) ? T[1] : T[2]);
    }// Max
    
    Status Min (Triplet T, ElemType &e) {
    	// 用 e 返回指向 T 的最小元素的值。
    	e = (T[0] <= T[1]) ? ((T[0] <= T[2]) ? T[0] : T[2]) : ((T[1] <= T[2]) ? T[1] : T[2]);
    }// Min
    
    展开全文
  • 人们在使用计算机解决客观世界中存在的具体问题时,通常过程如下:首先通过对客观世界的认知形成印象和概念从而得到了信息,在此基础上... 数据结构主要与在上述过程中从建立概念模型到实现模型转化并为后续程序设...

    人们在使用计算机解决客观世界中存在的具体问题时,通常过程如下:首先通过对客观世界的认知形成印象和概念从而得到了信息,在此基础上建立概念模型,它必须能够如实地反映客观世界中的事物以及事物间的联系;根据概念模型将实际问题转化为计算机能够理解的形式,然后设计程序;用户通过人机交互界面与系统交流,使系统执行相应操作,最后解决实际的问题。 数据结构主要与在上述过程中从建立概念模型到实现模型转化并为后续程序设计提供基础的内容相关。它是用来反映一个概念模型的内部构成,即一个概念模型由那些成分数据构成,以什么方式构成,呈现什么结构。数据结构主要是研究程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。

    基本概念

    • **数据(data)**是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。 数据的含义非常广泛,除了通常的数值数据、字符、字符串是数据以外,声音、图像等一切可以输入计算机并能被处理的都是数据。例如除了表示人的姓名、身高、体重等的字符、数字是数据,人的照片、指纹、三维模型、语音指令等也都是数据。
    • **数据元素(dataelement)**是数据的基本单位,是数据集合的个体,在计算机程序中通常作为一个整体来进行处理。例如一条描述一位学生的完整信息的数据记录就是一个数据元素;空间中一点的三维坐标也可以是一个数据元素。数据元素通常由若干个数据项组成,例如描述学生相关信息的姓名、性别、学号等都是数据项;三维坐标中的每一维坐标值也是数据项。数据项具有原子性,是不可分割的最小单位。
    • **数据对象(dataobject)**是性质相同的数据元素的集合,是数据的子集。例如一个学校的所有学生的集合就是数据对象,空间中所有点的集合也是数据对象。
    • **数据结构(datastructure)**是指相互之间存在一种或多种特定关系的数据元素的集合。是组织并存储数据以便能够有效使用的一种专门格式,它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。

    由于信息可以存在于逻辑思维领域,也可以存在于计算机世界,因此作为信息载体的数据同样存在于两个世界中。表示一组数据元素及其相互关系的数据结构同样也有两种不同的表现形式,一种是数据结构的逻辑层面,即数据的逻辑结构;一种是存在于计算机世界的物理层面,即数据的存储结构

    数据的逻辑结构按照数据元素之间相互关系的特性来分,可以分为以下四种结构:集合、线性结构、树形结构和图状结构。主要有线性表、栈、队列、树和图,其中线性表、栈、队列属于线性结构,树和图属于非线性结构。

    抽象数据类型

    抽象数据类型是描述数据结构的一种理论工具。在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念。

    **数据类型(datatype)**是一组性质相同的数据元素的集合以及加在这个集合上的一组操作。例如Java语言中就有许多不同的数据类型,包括数值型的数据类型、字符串、布尔型等数据类型。以Java中的int型为例,int型的数据元素的集合是[-2147483648,2147483647]间的整数,定义在其上的操作有加、减、乘、除四则运算,还有模运算等。

    定义数据类型的作用一个是隐藏计算机硬件及其特性和差别,使硬件对于用户而言是透明的,即用户可以不关心数据类型是怎么实现的而可以使用它。定义数据类型的另一个作用是,用户能够使用数据类型定义的操作,方便的实现问题的求解。例如,用户可以使用Java定义在int型的加法操作完成两个整数的加法运算,而不用关心两个整数的加法在计算机中到底是如何实现的。这样不但加快了用户解决问题的速度,也使得用户可以在更高的层面上考虑问题。

    与机器语言、汇编语言相比,高级语言的出现大大地简便了程序设计。但是要将解答问题的步骤从非形式的自然语言表达到形式化的高级语言表达,仍然是一个复杂的过程,仍然要做很多繁杂琐碎的事情,因而仍然需要抽象。对于一个明确的问题,要解答这个问题,总是先选用该问题的一个数据模型。接着,弄清该问题所选用的数据模型在已知条件下的初始状态和要求的结果状态,以及隐含着的两个状态之间的关系。然后探索从数据模型的已知初始状态出发到达要求的结果状态所必需的运算步骤。

    我们在探索运算步骤时,首先应该考虑顶层的运算步骤,然后再考虑底层的运算步骤。所谓顶层的运算步骤是指定义在数据模型级上的运算步骤,或叫宏观运算。它们组成解答问题步骤的主干部分。其中涉及的数据是数据模型中的一个变量,暂时不关心它的数据结构;涉及的运算以数据模型中的数据变量作为运算对象,或作为运算结果,或二者兼而为之,简称为定义在数据模型上的运算。由于暂时不关心变量的数据结构,这些运算都带有抽象性质,不含运算的细节。所谓底层的运算步骤是指顶层抽象的运算的具体实现。它们依赖于数据模型的结构,依赖于数据模型结构的具体表示。因此,底层的运算步骤包括两部分:一是数据模型的具体表示;二是定义在该数据模型上的运算的具体实现。我们可以把它们理解为微观运算。于是,底层运算是顶层运算的细化,底层运算为顶层运算服务。为了将顶层算法与底层算法隔开,使二者在设计时不会互相牵制、互相影响,必须对二者的接口进行一次抽象。让底层只通过这个接口为顶层服务,顶层也只通过这个接口调用底层的运算。这个接口就是抽象数据类型。

    **抽象数据类型(abstractdatatype,简称ADT)**由一种数据模型和在该数据模型上的一组操作组成。

    抽象数据类型包括定义和实现两个方面,其中定义是独立于实现的。抽象数据类型的定义仅取决于它的逻辑特性,而与其在计算机内部的实现无关,即无论它的内部结构如何变化,只要它的逻辑特性不变,都不会影响到它的使用。其内部的变化(抽象数据类型实现的变化)只是可能会对外部在使用它解决问题时的效率上产生影响,因此我们的一个重要任务就是如何简单、高效地实现抽象数据类型。很明显,对于不同的运算组,为使组中所有运算的效率都尽可能地高,其相应的数据模型具体表示的选择将是不同的。在这个意义下,数据模型的具体表示又依赖于数据模型上定义的那些运算。特别是,当不同运算的效率互相制约时,还必须事先将所有的运算的相应使用频度排序,让所选择的数据模型的具体表示优先保证使用频度较高的运算有较高的效率。

    我们应该看到,抽象数据类型的概念并不是全新的概念。抽象数据类型和数据类型在实质上是一个概念,只不过是对数据类型的进一步抽象,不仅限于各种不同的计算机处理器中已经实现的数据类型,还包括为解决更为复杂的问题而由用户自定义的复杂数据类型。例如高级语言都有的“整数”类型就是一种抽象数据类型,只不过高级语言中的整型引进实现了,并且实现的细节可能不同而已。我们没有意识到抽象数据类型的概念已经孕育在基本数据类型的概念之中,是因为我们已经习惯于在程序设计中使用基本数据类型和相关的运算,没有进一步深究而已。

    抽象数据类型一方面使得使用它的人可以只关心它的逻辑特征,不需要了解它的实现方式。另一方面可以使我们更容易描述现实世界,使得我们可以在更高的层面上来考虑问题。例如可以使用树来描述行政区划,使用图来描述通信网络。

    根据抽象数据类型的概念,对抽象数据类型进行定义就是约定抽象数据类型的名字,同时,约定在该类型上定义的一组运算的各个运算的名字,明确各个运算分别要有多少个参数,这些参数的含义和顺序,以及运算的功能。一旦定义清楚,人们在使用时就可以像引用基本数据类型那样,十分简便地引用抽象数据类型;同时,抽象数据类型的实现就有了设计的依据和目标。抽象数据类型的使用和实现都与抽象数据类型的定义打交道,这样使用与实现没有直接的联系。因此,只要严格按照定义,抽象数据类型的使用和实现就可以互相独立,互不影响,实现对它们的隔离,达到抽象的目的。 为此抽象数据类型可以使用一个三元组来表示:

    ADT=(D,S,P)

    其中D是数据对象,S是D上的关系集,P是加在D上的一组操作。在定义抽象数据类型时,我们使用以下格式: ADT抽象数据类型名{数据对象:<数据对象的定义>数据关系:<数据关系的定义>基本操作:<基本操作的定义>}

    展开全文
  • 线性结构,树结构,图结构)计算机世界里的数据结构是指存储结构(也是物理结构,包括:顺序结构,链接结构,索引结构,散列结构)1.2抽象数据类型(ADT)定义:由一种数据结构和在该数据结构上的一组操作组成....

    专题一 数据结构分类与抽象数据类型

    1.1数据结构分类

    现实世界中讨论的数据结构是指逻辑结构(包括:集合结构,线性结构,树结构,图结构)

    计算机世界里的数据结构是指存储结构(也是物理结构,包括:顺序结构,链接结构,索引结构,散列结构)

    1.2抽象数据类型(ADT

    定义:由一种数据结构和在该数据结构上的一组操作组成.

     

    抽象数据类型的书写格试:

    ADT <抽象数据类型名> is

     

                   data:

                 <数据描述>

                 operations: 

    <操作声明>

     

    end  <抽象数据类型名>

     

     

    例题:把二次多项试ax**2+bx+c设计成一种抽象数据类型,假定起名为QUAdratic,该类型的数据部分为三个系数项a,bc,操作部分为:

    (1)   初始化a,bc的值,假定他们默认值均为0

    (2)   做两个多项试的加法,返回他们的和;

    (3)   根据给定x的值计算多项式的值,并返回;

    (4)   计算机方程:ax**2 +b*x+c=0的根,对于有实根,无根和不是二次方程的情况要分别返回不同的整数值,

    (5)   按照:ax**2 +bx+c的各式输出二次多项式,在输出时要注意去掉系数为0的项,并且当bc的值为负时,其前不能出现加号.

     

    先建立抽象数据类型:

    ADT QUAdratic    is

    Data:

    一个二次多项式q,其系数分别为a,bc//数据描述部分

    Operations:

    Void   init(Quadratic & q,float aa=0,float bb=0,float cc=0)//初始化二项式

    Int    Add(Quadratic  &q1 ,Quadratic  &q2)// 两个多项试的加法

    Float  eval(Quadratic &q,float x)//二项式求值

    Void  root(Quadratic &q,float &r1,float &r2)//求二项试的根,两个实根由引用参数,r1,r2带回

    Void   print(Quadratic &q)//输出二项式

       End  QUAdratic

    下面是错误百出的代码:

    //2005.10.24
    /*先建立抽象数据类型:
    ADT QUAdratic    is
    Data:
    一个二次多项式q,其系数分别为a,b和c;//数据描述部分
    Operations:
    Void   init(Quadratic & q,float aa=0,float bb=0,float cc=0)

    //初始化二项式
    Int    Add(Quadratic  &q1 ,Quadratic  &q2)

    // 两个多项试的加法
    Float  eval(Quadratic &q,float x)

    //二项式求值
    Void  root(Quadratic &q,float &r1,float &r2)

    //求二项试的根,两个实根由引用参数,r1,r2带回
    Void   print(Quadratic &q)

    //输出二项式
       End  QUAdratic*/
    #include <iostream>
    #include<cmath>
    struct QUAdratic {
           float a,b, c;
           }
    void init(QUAdratic &q,float aa=0,float bb=0, float cc=0)

    {
    q.a=aa;q.b=bb;q.c=cc;
    }
    int Add(QUAdratic &q1, QUAdratic &q2)

    //两个多项式相加
    { QUAdratic &q;
    q.a=q1.a+q2.a;s
    q.b=q1.b+q2.b;
    q.c=q1.c+q2.c;
    return q;
    }
    float eval(QUAdratic &q,float x)

    //计算值为x时二项式的值;
    {return (q.a*x*x+q.b*x+q.c);
    }
    void root(QUAdratic &q,float &r1,float &r2){

    //计算方程的根 ,两个实根由引用参数r1,r2带回;
    if(q.a==0) return -1;

    //不是二次方程返回 -1;
     float x=q.b*q.b-4*q.a*q.c;
     if(x>=0){
              r1=float(-q.b+sqrt(x))/(2*q.a);
              r2=float(-q.b-sqrt(x))/(2*q.a);
              return 1; //有实根返回1;
              }
              else return 0;
    //无实根返回0;
              }
             
     void print(QUAdratic &q)//输出二项式
     {
          if(q.a) cout<<q.a<<"x**2";
     if(q.b) {
             if(q.b>0) cout<<"+"<<q.b<<"x";
             else cout<<q.b<<"x";
             }
     if(q.c)  cout<<q.c;
    }

     int  main(){
          QUAdratic a,b,c;
          init(a,2,3);
          print(a);
          cout<<eval(a,4)<<endl;
          float x1,x2;
          int n=root(a,x1,x2);
          if(n==1) cout<<x1<<''<<x2<<endl;
          init(b,3,-9,6);
          print(b);
          n=root(b,x1,x2);
          if(n==1) cout<<x1<<''<<x2<<endl;
          c=Add(a,b);
          print(c);
          }
         
         
         

    展开全文
  • 数据结构(Data Structure) 要了解什么是数据结构,首先要明确什么是数据和结构。 数据(Data) 数据是信息的载体。它能够被计算机识别、存储和加工处理,是计算机程序加工的”原料”。 随着计算机应用领域的...
  • 数据结构基础概念篇

    万次阅读 多人点赞 2017-11-14 13:44:24
    数据结构一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。数据:所有能被输入到计算机中,且能...
  • 数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。 为什么要学数据结构? 首先,因为数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果打算报考计算机专业的研究生,你...
  • 超硬核!数据结构学霸笔记,考试面试吹牛就靠它

    万次阅读 多人点赞 2021-03-26 11:11:21
    上次发操作系统笔记,很快浏览上万,这次数据结构比上次硬核的多哦,同样的会发超硬核代码,关注吧。
  • 数据结构与算法学习笔记

    万次阅读 多人点赞 2018-09-25 13:55:49
    本文是王争老师的《算法与数据结构之美》的学习笔记,详细内容请看王争的专栏。有不懂的地方指出来,我做修改。 数据结构与算法思维导图 数据结构指的是“一组数据的存储结构”,算法指的是“操作数据的一组...
  • 图结构 非常得类似我们之前讲到过的树结构,但前者没有很多的...在数学的概念中,后者是前者的一种,不过在数据结构中我们还是认为两者有所区别,尽管如此,我们在学习图结构的时候仍可以稍微借鉴一下树结构的思想。
  • 原文链接:Part 1: An Introduction to Data Structures 介绍:本文是介绍在.Net平台下使用数据结构的系列文章,共分为六部分,这是本文的第一部分.本文试图考察几种数据结构,其中有的包含在.Net Framework的基类库中,...
  • 数据结构与算法必知基础知识

    千次阅读 多人点赞 2021-01-06 22:58:12
    数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运行效率和降低...
  • Java数据结构与算法入门

    万次阅读 多人点赞 2018-04-29 11:53:50
    而各数据元素之间的相互关系,又包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。而一个数据结构的设计过程分成抽象层、数据结构层和实现层。数据结构在Java的语言体系中按逻辑结构可以分为两大类...
  • 1.3数据抽象级别

    千次阅读 2018-01-18 13:55:10
    一、数据抽象的级别1、概念数据模型2、逻辑数据模型3、外部数据模型4、内部数据模型表达用户需求观点的数据全局逻辑结构的模型,称之为概念模型;表达计算机实现观点的DB全局逻辑结构的模型,称之为逻辑模型;表达...
  • 常见抽象数据类型

    千次阅读 2019-03-27 15:48:25
    一、栈 结构:栈顶、栈底 特点:后进先出。从栈顶压入栈,从栈顶压出栈 二、队列 1、队列 ...、树 1、二叉树 2、AVL树 3、伸展树 4、(2,4)树 5、红黑树 四、图 五、映射 1、哈希表 2、跳跃表 ...
  • 30 重要数据结构和算法完整介绍(建议收藏保存)

    千次阅读 多人点赞 2021-06-07 08:02:06
    数据结构和算法 (DSA)通常被认为是一令人生畏的话题——一种常见的误解。它们是技术领域最具创新性概念的基础,对于工作/实习申请者和有经验的程序员的职业发展都至关重要。话虽如此,我决定在CSDN新星计划挑战...
  • 其实树结构是平日里我们常见的一种数据结构,例如家族族谱、公司管理层级结构图等,这样的数据结构的存在一定有一定的道理。因此,在计算机领域中,树结构也是会被广泛用到的,例如数据库系统中就有用到。那么本文就...
  • 2022考研数据结构_1 绪论

    万次阅读 2020-12-28 16:29:19
    1. 数据结构绪论 1.1 什么是数据结构数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 1.2 数据结构起源 ​ 1968年,美国的高德纳教授开创了数据结构的课程体系。 ​ 数据结构是一门研究非数值计算...
  • 数据结构与算法—前导

    千次阅读 2019-07-25 23:53:34
    数据结构与算法是程序员内功体现的重要标准之一,而数据结构的也应用在各个方面,更有程序=数据结构+算法这被人认证的等式存在。并且数据结构与算法的应用无处不在,各个中间件开发者,架构师。他们都在努力的优化...
  • 抽象数据类型(ADT)

    千次阅读 2017-09-12 21:10:48
    说到抽象数据类型,那么就得先提到数据类型数据类型指的是一值的集合以及定义在这集合上的一组操作为什么要有不同的数据类型呢 当我们计算1+1的时候,只需要很小的存储空间,但是当我们去计算10000+100000的时候...
  • 分门别类介绍数据结构的基本概念,查漏补缺必看文章。
  • 数据结构(一)基本概念

    千次阅读 多人点赞 2018-10-09 23:21:57
    数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。 ——Sartaj Sahni 《数据结构、算法与应用》 数据结构是 ADT(Abstract Data Type,数据...
  • 看这玩意复习你还会挂科?《数据结构篇》

    万次阅读 多人点赞 2020-01-14 15:12:42
    程序 = 算法 + 数据结构 2.数据结构的定义 是相互之间存在一种或多种特定关系的数据元素的集合 3.数据、数据元素、数据对象的概念 数据(data):对客观事物的符号表示,含义很广,指数、图像、声音、文本等...
  • java数据结构与算法之顺序表与链表深入分析

    万次阅读 多人点赞 2016-11-05 16:24:30
    开篇直接奔主题,无论是顺序表还是链表,它们都是...线性表抽象数据类型概述 线性表的顺序存储设计与实现顺序表 1 顺序存储结构的设计原理概要 2 顺序存储结构的实现分析 3 顺序存储结构的效率分析 线性表的链式存
  • 抽象数据类型(ADT)

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

    千次阅读 2019-06-19 20:25:39
    什么是数据结构数据结构是什么? 数据结构是计算机存储、组织数据的方式...数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。也就是说,数组结构指的是数据集合及...
  • 如何理解并掌握 Java 数据结构

    千次阅读 多人点赞 2019-11-13 11:11:45
    Jack和大家一起来重温《Java数据结构》经典之作。...而各数据元素之间的相互关系,又包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。 而一个数据结构的设计过程分成抽象层、数据结...
  • 考研408复习笔记—— 数据结构(一)

    千次阅读 多人点赞 2020-09-16 19:09:36
    数据结构一、绪论1.1 数据结构的目的1.2 基本概念1.2.1、 数据1.2.2、数据元素、数据项1.2.3、数据对象、数据结构1.2.4、数据类型、抽象数据类型(ADT)1.3 要素1.3.1、逻辑结构——数据元素之间的`逻辑关系`。...
  • 数据结构名词解释以及简答

    千次阅读 多人点赞 2020-05-20 23:28:52
    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储和数据组织的方式,它分为三个方面,即数据的逻辑结构,数据的物理结构,数据的操作。 数据项:是数据不可分割的最小单位,用它可以...
  • 数据结构的简单理解(1)

    千次阅读 2017-08-12 16:38:14
    数据结构一般包含如下三个方面:1、数据的逻辑结构 数据的逻辑结构可以看做是从具体问题中抽象出来的数学模型,仅仅描述数据之间的逻辑关系(理解到这里就可以了),与数据在计算机中的存储位置无关,独立于计算机...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 164,856
精华内容 65,942
关键字:

抽象数据结构三个组成部分

数据结构 订阅