博客作业01-抽象数据类型

有理数基本运算

1.作业内容

用ADT的抽象数据模型描述你的有理数数据类型

ADT Rational{

    数据对象:
        D={ e1, e2 | e1,e2属于int类型} //int是类型标识符

    数据关系:
        R={ <e1,e2> }  //e1为有理数的分子,e2为有理数的分母

    基本运算:

        Init(Rational *T,int n,int m):构造有理数z,元素e1,e2分别赋以分子,分母值

        Destory(Rational &T):销毁有理数  

        back(Rational &T,int i,int e):用e返回有理数T的分子分母,当如参i为1时返回分子,i为2时返回分母 

        change(Rational &T,int i,int e):将有理数T的分子或分母更改为e,入参i为1时改变分子,i为2时改变分母 

        Commul(Rational *T1,Rational *T2,int mul):求有理数分母最小公倍数 

        Add(Rational *T1,Rational *T2,Rational *T3,int mul):有理数x和y相加,结果存入有理数z 

        Sub(Rational *T1,Rational *T2,Rational *T3,int mul):有理数x和y相减,结果存入有理数z 

        Mul(Rational *T1,Rational *T2,Rational *T3):有理数x和y相乘,结果存入有理数z 

        Div(Rational *T1,Rational *T2,Rational *T3):有理数x和y相除,结果存入有理数z 

        Commul(Rational *T1,Rational *T2,int mul):求有理数分母最小公倍数  

        Turn(Rational *T3):化简有理数 

        out(Rational *T3):输出有理数 

 }ADT Rational

2.数据结构、函数说明

3.代码实现说明

  • 构造有理数

  • 销毁有理数

  • 分子分母返回

  • 分子分母更改

  • 有理数求和

  • 有理数求差

  • 有理数求积

  • 有理数求商

4.代码互评


------------------------------------------------分------割-------线---------------------------------------------

  • 梦冰同学在有理数定义的时候是用 new 动态分配空间,优点是按需分配不浪费存储空间;不足之处在于若指针没有及时释放,则会成为指向任意空间的野指针。
  • 而我在有理数定义是使用结构体,优点是结构体按计划分配,由编译器给定空间,在作用域使用完毕系统自动释放所占空间;不足之处在于结构体是静态分配,只有固定的内存和位置,不能根据需求任意改变大小。

5.结果展示

  • 有理数不等

  • 有理数相等

  • 分母为零

  • 分母为负数

6.总结

这两个概念,尤其是第一个是特别非常抽象的概念,没什么具体可对应的实体可以给你举例,我就随便说说我的理解吧。

  • 数据结构呢,我们总是为了完成一个功能或者目的写程序,但不管什么程序、代码实际上都是一些指令的集合,说白了就是在描述“怎么做”,而光知道怎么做还只是问题的一半,还要知道“做什么”,也就是刚才那些指令的对象是谁,自然肯定是相关的数据,比如说学生信息管理中,指令是增加学生,那他的对象就是学生信息这种数据,指令是成绩统计,那对象就是学生的成绩数据,而在我们的程序中,数据也必须要有一种很明确的组织表示方式,只要这样我们才能在这种具体明确的实体上编写指令,比如说学生数据可以定义为一个多维的数组,只有这样我们再写增加学生时,才能知道具体增加就是增加一个数组元素并未其赋值。所以数据结构就是相互之间有联系的具有某种组织方式的数据集合。
  • 抽象数据类型相比较数据结构要具体一些,我们光有了数据结构还不够,因为数据是各种各样的,对于不同数据,我们能采取的方法也不一样,比如说学生数据可以增减,成绩数据可以进行算数运算,但是为什么说抽象呢,也就说他并不是具体整型还是字符型这种基本类型,而是我们根据我们要解决的实际问题,对应现实世界所描述的一种和现实世界中的实体对应的数据类型,而且这种抽象的数据类型还包括能够对于他实行的操作,比如说我们定义一种数据类型叫“学生”,具体的数据我可以定义一中类似表的结构存储,而且还要定义一些操作,比如说添加学生,删除学生,这两部分就共同组成了“学生”这个抽象的数据类型。

7.选做

学会使用git上传你的代码到码云

posted @ 2018-03-08 20:29  做人要有疯度  阅读(278)  评论(0编辑  收藏  举报