zoukankan      html  css  js  c++  java
  • 抽象数据类型的表示与实现

    抽象数据类型的表示与实现

    (1)预定义常扯及类型:

    //函数结果状态代码
    #define OK 1 
    #define ERROR 0 
    #define OVERFLOW -2 
    //Status 是函数返回值类型, 其值是函数结果状态代码。
    typedef int Status;
    

    (2)数据结构的表示(存储结构)用类型定义(typedef)描述;数据元素类型约定为ElemType, 由用户在使用该数据类型时自行定义。

    (3)基本操作的算法都用如下格式的函数来描述:

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

    当函数返回值为函数结果状态代码时, 函数定义为 Status 类型。为了便千描述算法,除了值 调用方式外,增加了C+ +语言引用调用的参数传递方式。 在形参表中, 以 "&"打头的参数即为 引用参数。传递引用给函数与传递指针的效果是一样的, 形参变化实参也发生变化,但引用使用 起来比指针更加方便、 高效。

    (4)内存的动态分配与释放。

    使用 new 和 delete 动态分配和释放内存空间:

    分配空间 指针变扯=new 数据类型; 
    
    释放空间 delete 指针变扯;
    

    下面以复数为例, 给出一个完整的抽象数据类型的定义、 表示和实现。

    ADT Complex { 
    数据对象:D={el, e2 I el, e2ER,R 是实数集}
    数据关系: S={<el,e2>1el 是复数的实部, e2 是复数的虚部}
    基本操作:
            Creat (&C, x, y)
            操作结果:构造复数C, 其实部和虚部分别被赋以参数x和y的值。
            初始条件:复数C已存在。
            操作结果:返回复数C的实部值。
    		GetReal(C)
            初始条件:复数C已存在。
            操作结果:返回复数c的虚部值。
            Add( Cl,C2) 
            初始条件:Cl, C2 是复数。
            操作结果:返回两个复数 Cl和 C2 的和。
            Sub(Cl,C2)
            初始条件:Cl, C2 是复数。
            操作结果:返回两个复数 Cl 和 C2 的差。
            } ADT Complex 
    
    

    用C语言写出复数的存储表示和相应操作

    (2) 表示部分:
    typedef struct{
        float Realpart; //实部
        float Imagepart; //虚部
    }Complex; 
    (3) 实现部分:
    
    void Create(&Complex C, float x, float y) 
    {//构造一个复数
        C.Realpart=x;
        C.Imagepart=y; 
     }
    float GetReal(Complex C) 
    { 
        //取复数C=x+yi的实部
        return C.Realpart; 
    }
    float Getimag (Complex C) 
    { 
        //取复数C=x+yi的虚部
        return C.Imagepart; 
    }
    Complex Add(Complex Cl, Complex C2) 
    { 
        //求两个复数Cl和C2的和sum
        Complex sum; 
        sum.Realpart=Cl.Realpart+C2.Realpart; 
        sum.Imagepart=Cl.Imagepart+C2.Imagepart; 
        return sum;
    }
    Complex Sub(Complex Cl, Complex C2) 
    { 
        //求两个复数Cl和C2的差difference
        Complex difference; 
        difference.Realpart=Cl.Realpart-C2.Realpart; 
        difference.Imagepart=Cl.Imagepart-C2.Imagepart; 
        return difference;
    
  • 相关阅读:
    Understanding about Baire Category Theorem
    Isometric embedding of metric space
    Convergence theorems for measurable functions
    Mindmap for "Principles of boundary element methods"
    Various formulations of Maxwell equations
    Existence and uniqueness theorems for variational problems
    Kernels and image sets for an operator and its dual
    [loj6498]农民
    [luogu3781]切树游戏
    [atAGC051B]Three Coins
  • 原文地址:https://www.cnblogs.com/jia0504/p/12337372.html
Copyright © 2011-2022 走看看