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


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

    (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;
    
  • 相关阅读:
    诡异的楼梯 HDU1180
    selenium的那些命令:
    权限管理:
    图片裁剪:
    2-15 showapiRequest解决图片验证码识别.py
    2-14 使用pytesseract识别图片中得问题.py
    使用C#开发ActiveX控件 11
    Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
    Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
    Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
  • 原文地址:https://www.cnblogs.com/jia0504/p/12337372.html
Copyright © 2020-2023  润新知