精华内容
下载资源
问答
  • 本代码中涉及的是一些常见基础的数据结构C语言结构体定义,及相关数据初始和运算,本代码的初衷是方便大家在练习考研编程题缩减不必要的时间,比如一系列的ADT初始化问题。这样大家就可以有较多时间花在思考算法而...
  • <数据结构> ADT例子

    千次阅读 2014-09-24 15:25:12
    ADT English_scores  Data  线性表中的数据类型为int,相邻元素具有前驱和后继关系    Operation  Init  前置条件:线性表不存在  输入:班级同学的上学期的英语成绩  功能:成绩表的初始化...
    ADT English_scores


     Data
       线性表中的数据类型为int,相邻元素具有前驱和后继关系
     
     Operation


       Init
           前置条件:线性表不存在
           输入:班级同学的上学期的英语成绩
           功能:成绩表的初始化
           输出:成绩表建立是否成功(成功1,失败0)
           后置条件:一个非空的成绩表
       
       Insert
           前置条件:成绩表已存在
           输入:插入元素x
           功能:在成绩表的y位置插入元素x
           输出:插入是否成功(成功1,失败0)
           后置条件:若插入成功,成绩表增加了一个元素


       Find_Location
           前置条件:成绩表已存在
           输入:元素的序号i
           功能:在成绩表中查找序号为i的数据元素
           输出:查找是否成功(如果成功,查找成功,并返回查找元素的值,否则返回,并输出无此元素)
           后置条件:成绩表无变化


       Find_value
           前置条件:成绩表已存在
           输入:元素的值x
           功能:在成绩表中查找值等于x的元
           输出:查找是否成功(如果成功,输出查找成功,并返回该元素在表中的序号,否则返回,并输出无此元素)
           后置条件:成绩表无变化


       Delete
           前置条件:成绩表已存在
           输入:删除元素的序号i
           功能:在表中删除序号为i的元素
           输出:删除是否成功(如果成功,输出删除成功,并返回该元素的值,否则返回)
           后置条件:成绩表减少一个元素


       Show
           前置条件:成绩表已存在
           输入:无
           功能:按序号依次输出成绩表里所有的元素
           输出:表中的所有的数据元素
           后置条件:成绩表无变化


       Average
           前置条件:成绩表已存在
           输入:无
           功能:计算成绩表中所有元素的平均值
           输出:成绩表中所有元素的平均值
           后置条件:成绩表无变化
       
       Max_Min
           前置条件:成绩表已存在
           输入:无
           功能:找出成绩表中元素值最大和最小的
           输出:成绩表中的最大值和最小值及其元素的序号
           后置条件:成绩表无变化
           
       Seqencing
           前置条件:成绩表已存在
           输入:无
           功能:把成绩表中元素按值从大到小排序
           输出:排序后的成绩表的全部元素
           后置条件:成绩表无变化


    endADT
    展开全文
  • 1、【平衡符号】:做一个空栈。读入字符直到文件结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出,如果弹出的符号不是对应的开放符号,则报错。...

    1、【平衡符号】:

    做一个空栈。读入字符直到文件结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出,如果弹出的符号不是对应的开放符号,则报错。在文件结尾,如果栈非空则报错。

    2、【后缀表达式】
    例如一个计算表示:4*1.6 + 5+6*1.6
    写成后缀(逆波兰)记法为: 4 1.6 * 5 + 6 1.6 * +
    计算这个问题最容易的方法是使用一个栈。当见到一个数时就把他推入栈中;在遇到一个运算符时该算符就作用于从该栈弹出的两个数(符号)shang ,再将所得结果推入栈中。

    3、【中缀到后缀的转换】
    这个算法的思想是,当看到一个操作符的时候,把他放到栈中。栈代表挂起的操作符。然而,栈中有些具有高优先级的操作符现在知道当他们不再被挂起时要完成使用,应该被弹出。这样,在把当前操作符放入栈中之前,那些在栈中并在当前操作符之前要完成使用的操作符被弹出。

    4、【方法调用 】

    展开全文
  • 栈是一种特殊的线性表,是一种线性数据结构,其特殊性是表现在操作定义上:插入和删除操作只能在两端进行(不允许在线性表的中间插入和删除)。...这里我以链式栈为例子给大家讲解栈ADT的定义。...

    栈是一种特殊的线性表,是一种线性数据结构,其特殊性是表现在操作定义上:插入和删除操作只能在两端进行(不允许在线性表的中间插入和删除)。

    栈(Stack):

    数据结构————线性关系

    操作————一端固定,只允许一端插入删除

    特性————“先进的先出,后进的后出”

    栈有两种存储方式,一种是顺序存储(顺序栈),另一种是链式存储(链式栈)。

    这里我以链式栈为例子给大家讲解栈ADT的定义。

    单链栈:

    1.存储结构:

    特点:栈空间容易扩充,减少了溢出的可能。只有在系统没有空间时才会溢出。

    2.C++类实现

    链式栈类的定义:

    //栈节点类定义
    struct StackNode{
    public:
        T data;//栈节点数据
        StackNode *link;//节点链指针
        StackNode(T d=0,StackNode *next=NULL):data(d),link(next){}
        ~StackNode(){};
    };
    //链式栈类定义
    class LinkedStack{
    private:
        StackNode *top;//栈顶指针
    public:
        LinkedStack():top(NULL){}//构造函数
        ~LinkedStack(){MakeEmpty();}//析构函数
        void Push(T &x);//进栈
        bool Pop();//出栈
        bool GetTop();//取栈顶元素
        bool IsEmpty() const{return(top==NULL)?true:false;}
        int GetSize();
        void MakeEmpty();//清空栈内容
    };

    (1)栈置空:和单链表置空原理相同

    //单链表栈置空
    void LinkedStack::MakeEmpty(){
        //逐次删去链式栈中的元素直至栈顶指针为空
        StackNode *p;
        while (top!=NULL){
            p = top;
            top = top->link;
            delete p;
        }
    };

    (2)入栈

    //入栈
    void LinkedStack::Push(T &x){
        //将元素值x插入到链式栈的栈顶,即链头
        top = new StackNode(x,top);//创建新节点
        //assert(top!=NULL);//创建失败退出
    };

    (3)出栈

    //出栈
    bool LinkedStack::Pop(){
        //删除栈顶节点,返回被删除的栈顶元素
        if (IsEmpty()==true) return false;
        StackNode *p = top;//记录退栈节点
        top = top->link;//退栈
        int x = p->data;//返回退栈元素
        cout<<"退栈元素为:"<<x<<endl;
        delete p;//释放节点
        return true;
    };

    (4)获得栈顶元素

    bool LinkedStack::GetTop(){
        if (IsEmpty()==true) return false;
        T x;
        x = top->data;
        cout<<"栈顶元素为:"<<x<<endl;
        return true;
    };

    (5)获得栈的大小

    int LinkedStack::GetSize(){
        StackNode *p=top;
        int Size = 0;
        while (p!=NULL){
            p = p->link;
            Size = Size + 1;
        }
        return Size;
    };

    完整ADT代码如下:

    #include <iostream>
    
    using namespace std;
    
    typedef int T;
    
    //栈节点类定义
    struct StackNode{
    public:
        T data;//栈节点数据
        StackNode *link;//节点链指针
        StackNode(T d=0,StackNode *next=NULL):data(d),link(next){}
        ~StackNode(){};
    };
    
    //链式栈类定义
    class LinkedStack{
    private:
        StackNode *top;//栈顶指针
    public:
        LinkedStack():top(NULL){}//构造函数
        ~LinkedStack(){MakeEmpty();}//析构函数
        void Push(T &x);//进栈
        bool Pop();//出栈
        bool GetTop();//取栈顶元素
        bool IsEmpty() const{return(top==NULL)?true:false;}
        int GetSize();
        void MakeEmpty();//清空栈内容
    };
    
    bool LinkedStack::GetTop(){
        if (IsEmpty()==true) return false;
        T x;
        x = top->data;
        cout<<"栈顶元素为:"<<x<<endl;
        return true;
    };
    
    int LinkedStack::GetSize(){
        StackNode *p=top;
        int Size = 0;
        while (p!=NULL){
            p = p->link;
            Size = Size + 1;
        }
        return Size;
    };
    
    //单链表栈置空
    void LinkedStack::MakeEmpty(){
        //逐次删去链式栈中的元素直至栈顶指针为空
        StackNode *p;
        while (top!=NULL){
            p = top;
            top = top->link;
            delete p;
        }
    };
    
    //入栈
    void LinkedStack::Push(T &x){
        //将元素值x插入到链式栈的栈顶,即链头
        top = new StackNode(x,top);//创建新节点
        //assert(top!=NULL);//创建失败退出
    };
    
    //出栈
    bool LinkedStack::Pop(){
        //删除栈顶节点,返回被删除的栈顶元素
        if (IsEmpty()==true) return false;
        StackNode *p = top;//记录退栈节点
        top = top->link;//退栈
        int x = p->data;//返回退栈元素
        cout<<"退栈元素为:"<<x<<endl;
        delete p;//释放节点
        return true;
    };

    测试代码:

    int main()
    {
        LinkedStack ls;
        for(int i=0;i<10;i++){
            ls.Push(i);
        }
        int Size;
        Size = ls.GetSize();
        cout<<"栈大小:"<<Size<<endl;
    
        ls.Pop();
        Size = ls.GetSize();
        cout<<"栈大小:"<<Size<<endl;
    
        ls.GetTop();
        return 0;
    }

    测试结果:

    展开全文
  • 数据结构--ADT

    2017-03-18 20:35:00
    ADT,其实就是abstract data type,抽象数据类型,额,其实他丫就是,java 的class...... 不过关于ADT,还是有些概念要梳理下 一、封装性  ADT封装了数据以及对应的数据操作(方法/函数),它理所当然地会降低...

    好吧,这个没什么好讲的,写过java代码的人估计一直都在用ADT,

    ADT,其实就是abstract data type,抽象数据类型,额,其实他丫就是,java 的class......

     

    不过关于ADT,还是有些概念要梳理下

    一、封装性

      ADT封装了数据以及对应的数据操作(方法/函数),它理所当然地会降低一些性能,但是确实编程模块化不可或缺的部分。

    二、接口,客户,实现概念的简单说明

      这里的接口并不是java中的interface,它是指ADT中,暴露给外界的一个操作入口。

      客户:使用ADT的客户程序

      实现:ADT本身的具体实现类

      软件工程中会常常涉及到这三个概念,其实三者关系就是:客户通过接口访问实现。

     

    额,就这么多了,你猜对了,我只是在凑多一篇博客。

    不服,你他妈来打我啊!

    (开玩笑的,打不过你的)

    转载于:https://www.cnblogs.com/lcplcpjava/p/6576005.html

    展开全文
  • 队列是一种特殊的线性表,数据元素之间是线性关系,其插入和删除操作分别在两边进行,一端只能插入,另一端只能删除。 队首(front):进行删除操作的一端; 队尾(rear):进行插入操作的一端; 入队:在队尾插入一个...
  • 前言:ADT与开发 ———————————————————————————————————————— 一些基本的操作我们就不提了,提一提我觉得比较新的和有价值的东西。 1.基本操作的算法都由如下格式描述...
  • 什么是数据结构

    千次阅读 2019-06-19 20:25:39
    什么是数据结构数据结构是什么? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据...
  • *资料整理来源:《数据结构(C语言版)》–严蔚敏、吴伟民编著1.ADT描述 抽象数据类型(abstract data type,ADT)是指一个数学模型以及定义在该模型上的一组操作。 ADT 抽象数据类型名{ 数据对象:<数据对象的...
  • 在学习数据结构类型时,首先遇到的一个难点即是如何理解抽象数据结构类型。通过阅读多个博客,将个人理解总结如下: 如已看过抽象数据类型定义,可直接跳过定义。 抽象数据类似的定义 抽象数据类型(Abstract Data ...
  • 二叉树最基本的一些内容,是数据结构书上的例子。。。
  • java算法:基于应用ADT例子 例1:多项式ADT接口 Java代码 classPoly{ Poly(int,int) doubleeval(double) voidadd(Poly) voidmult(Poly) publicStringtoString() } class Poly{ ...
  • 一、ADT  在介绍抽象数据类型的时候,先看看什么是数据类型,在Java中可能首先会想到像 int,double这样的词,这是Java中的基本数据类型,一个数据类型会涉及到两件事:  ①、拥有特定特征的数据项  ②、在数据...
  • C++的抽象数据类型ADT编写例子 要点: template <typename DataType> 要写在每个函数前面 函数的实现格式:返回值 ClassName<DataType> :: 函数名(){} #include<iostream> //#include "SeqList.h...
  • 对于每一个队列数据结构,我们保留一个数组 theRay以及位置 front和back,它们代表队列的两端。我们还要记录实际存在于队列中的元素的个数 currentsize。 操作应该是清楚的。要 enqueue元素x,可将 currentsize和...
  • 3-3 抽象数据类型ADT

    2020-03-25 10:06:44
    ▪ 抽象数据类型和表示独立性:使我们能够将如何在程序中使用数据结构数据结构本身的特定形式区分开来。 抽象数据类型解决了一个特别危险的问题:客户对类型的内部表示进行假设。 –我们将了解为什么这是危险的,...
  • 抽象数据类型ADT

    2021-08-24 08:43:55
    抽象数据类型ADT定义ADT数据结构的关系抽象数据类型的描述三种情况 定义 抽象是指忽略非本质的细节,抽取出事务具有的普遍性的本质。 而ADT是用高级语言对数据结构的一种定义,也是一种研究数据结构的方式。主要...
  • 数据结构及算法(线性表ADT描述)

    千次阅读 2018-11-13 00:08:10
    抽象数据类型核心是确定了数据元素的一组基本操作,这些操作都是定义在相应逻辑结构上之上,与数据元素的数据类型和存储结构无关。设有线性表list,其中数据元素类型为DataType,List的ADT定义可以描述为: //基本...
  • 因为教材中的概念之间存在冲突,所以广泛浏览各类教材、视频,对数据结构进行系统、辩证的梳理。建议考研看不懂教材或者视频的同学看一看。
  • 数据结构 大学已逐渐进入尾声,想回顾一下自己专业所学的内容,看到数据结构这些概念,也总是记不住,理解也不是很深刻。想借助写下这些来加深一些印象吧。以下一些相关的内容,来自王道的数据结构讲解。 基本概念 ...
  • 其递归结构如图所示: 二叉树的一个性质是平均二叉树的深度要比节点个数N小得多,分析表明,这个深度是,对于特殊类型的二叉树,即二叉查找树(binary search tree),其深度的平均值为。 二叉树有许多与搜索...
  • 抽象数据型(ADT

    2021-06-09 23:38:21
    本文内容,来说明一下抽象数据型(ADT)在软件构造中的重要作用。 抽象数据类型(Abstract Data Type,ADT)是将数据对象、数据对象之间的关系和数据对象的基本操作封装在一起的一种表达方式,它和工程中的应用是...
  • 数据结构与算法 -- 栈 ADT

    千次阅读 2017-02-14 10:08:09
    这两天翻了下数据结构与算法分析和严蔚敏的数据结构这两本书,受益很多。不过大多的示例不够完整,需要自己动手编写程序。又看了遍培训时的笔记,虽然很糙但是精华的部分还是可以借鉴的。还有看到了不错的博文,参看...
  • 1.表、队列、栈、树、散列表、堆(ADT)与数组、链表的关系与区分(数据结构中的概念)  首先,明确两个概念:数据结构与数据存储结构!  数据结构:是一个逻辑上的概念,指相互之间存在一种或多种特定关系的...
  • 3.6 栈ADT 栈(stack)是限制插入和删除操作只能在一个位置上进行的表,该位置是表的末端,称为栈的顶(top)。对栈的基本操作是push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。最后插入...
  • 抽象数据类型(ADT)入门(一)

    千次阅读 2015-03-20 16:40:02
    ADT的一个实现包括存储数据元素的存储结构以及实现基本操作的算法。 在这个数据抽象的思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念。这使得只研究和使用它的结构而不用考虑它的实现...
  • 数据结构——线性表的抽象数据类型 ADT (SequenceList)         线性表(list) Data        线性表的数据对象集合为{a1,a2,a3,…,an},每个...
  • 抽象数据类型(ADT

    2020-04-13 19:51:13
    能够分离程序中数据结构的形式和对其使用的方式,如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在的bug—— 在client 和implementer 之间建立“防火墙”。...
  • 数据结构与算法学习笔记——栈ADT C++实现1 特点2 包含的操作3 实现方式3.1 基于数组实现(应用较多)3.2 基于单链表实现 1 特点 栈的数据结构为线性结构 栈只能在同一位置进行插入和删除,这个位置叫做栈顶。后进...
  • C语言实现抽象数据类型(ADT)

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,915
精华内容 1,966
关键字:

数据结构adt例子

数据结构 订阅