首页 > 其他分享 >数据结构—抽象数据类型的表示与实现

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

时间:2022-10-11 21:12:54浏览次数:52  
标签:语句 实现 Complex 抽象数据类型 复数 C2 C1 数据结构 表达式

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指针变量;

5、赋值语句

简单赋值  变量名 = 表达式;
串联赋值  变量名1 = 变量名2 = ... =变量名n = 表达式;
成组赋值  (变量名1,...,变量名n) = (表达式1,...,表达式n);
结构赋值  结构名1 = 结构名2;
              结构名 = (值1,值2,...,值n);
条件赋值  变量名 = 条件表达式 ?表达式T:表达式F;
交换赋值  变量名1 <-->变量名2;

6、选择语句

条件语句1  if(表达式)语句;
条件语句2  if(表达式)语句;
                else语句;
开关语句   switch(表达式)
                  {
                         case 值1:语句序列1;break;
                         case 值2:语句序列2;break;
                         ...
                         case 值n:语句序列n;break;
                         default: 语句序列n+1;
}

7、循环语句

for语句           for(表达式1:条件;表达式2)语句;
while语句        while(条件)语句;
do-while语句   do {
                             语句序列;
                           }while(条件);

8、结束语句

函数结束语句  return表达式;
                    return;
                    case或循环结束语句break;
                   异常结束语句 exit(异常代码);

9、输入输出语句使用C++流式输入输出的形式

输入语句  cin>>变量1>>...>>变量n;
输出语句  cout<<表达式1<<...<<表达式n;

10、基本函数

求最大值  Max(表达式1,...,表达式n)
求最小值  Min (表达式1,...,表达式n)

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

1)定义部分:

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

2)表示部分:

typedef struct              //复数类型
{
     float  Realpart;        //实部
     floar  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.Relpart;
}
floar GetImag(Complex C)
{ //取函数C=x+yi的虚部
    return C.Imagepart;
}
Complex Add(Complex C1,Complex C2)
{ //求两个复数C1和C2的和sum
    Complex sum;
    sum.Realpart=C1.Realpart+C2.Realpart;
    sun.Imagepart=C1.Imagepart+C2.Imagepart;
    return sum;
}
Complex Sub(Complex C1,Complex C2)
{  //求两个复数C1和C2的差difference
    Complex difference;
    difference.Realpart=C1.Realpart-C2.Realpart;
    difference.Imagepart=C1.Imagepart-C2.Imagepart;
    return difference;
}

这样定义之后,就可以在主程序中通过调用Create函数构造一个复数,调用Add或Sub函数来实现复数的加法或减法运算,用户可以像使用整数类型那样使用复数类型了。

标签:语句,实现,Complex,抽象数据类型,复数,C2,C1,数据结构,表达式
From: https://www.cnblogs.com/Santariki/p/16782568.html

相关文章

  • Python之斐波那契数列的实现
    1.斐波那契数列的概念斐波那契数列(Fibonaccisequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这......
  • IDEA 使用 Docker 插件,实现一键自动化部署
    一、docker开启远程连接访问​首先我们要开启docker的远程连接访问。保证不是docker所在的服务器,也能够远程访问docker。Linux版的docker:修改docker.service文件,添加监听......
  • 2、CSS动画——拳皇动画实现
    本篇主要利用了animation实现了三个动画效果:奔跑的小孩,行走的人和拳皇动画;实现步骤:1、找寻需要用到的三张图:奔跑的小孩行走的人拳皇2、右单击图片查看属性,如图: 其他两张方......
  • 驱动开发:内核中实现Dump进程转储
    多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码......
  • 数据结构—基本概念和术语
    1、数据    数据(Data)是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。2、数据元素    数据元素(DataElement)是数据的基本单......
  • 驱动开发:内核中实现Dump进程转储
    多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码......
  • 数据结构在实际开发(c r u d)中的作用
    1、线性表和map、这两个东西基本上做各种curd应用很够了;栈除了做一些复杂的算法以外不存在什么开发用处、而队列基本上都用队列中间件来完成、自己程序里就没必要弄队......
  • 程序、进程、线程、多线程是什么,为什么要用多线程?Java基础复习--数组数据结构分析 ins
    大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来......
  • Element UI-实现树形控件单选
    ElementUI-实现树形控件单选1.单选功能elementui中的树形可以设置checkbox,但是不能设置radio的单选功能但官方提供了自动勾选方法:想实现单选只需要给node增加点......
  • elementUI Tree 树形控件实现单选+获取树形控件单选框勾选内容
    elementUITree树形控件实现单选+获取树形控件单选框勾选内容  html部分<el-tree:data="data"show-checkbox......