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

本文介绍了一种有理数数据结构ADTRational的设计与实现,包括化简、加法、减法、乘法、除法等基本运算。特别强调了化简过程中最大公约数的计算,并对比了不同化简方法的效率。

一、作业内容

ADT Rational{
    数据对象:D={v1,v2}都是ElemType类型
    数据关系:R={<v1,v2>}
    基本操作:
                    Status InitRational(Rational &R,ElemType v1,ElemType v2)
                    Status DestroyRational(Rational &R)
                    Status RationalPut(Rational &R)            
                    Status RationalAdd(Rational &R,Rational R1,Rational R2)
                    Status RationalCut(Rational &R,Rational R1,Rational R2)
                    Status RationalTake(Rational &R,Rational R1,Rational R2)
                    Status RationalDivide(Rational &R,Rational R1,Rational R2)
                    int gcd(int m,int n)
}ADT Rational               

二、数据结构、函数说明

1232094-20180306201129352-1668680785.png

1232094-20180306201237703-1229697068.png

三、代码实现说明

1.输入输出和菜单选择及初始化**
1232094-20180306201648320-2002469434.png
1232094-20180306201742727-58914954.png
1232094-20180306201750580-2021540650.png
1232094-20180306202314809-1261736784.png
1232094-20180306202405389-90525215.png

2.化简有理数
1232094-20180306201909792-884522787.png
1232094-20180306201926453-582119787.png
ps:
先找到最大公约数,再除以这个数即可化简**

3.四种运算法则及销毁

1232094-20180306202114371-1414696132.png
1232094-20180306202137696-1735442254.png
1232094-20180306202200720-527541382.png
1232094-20180306202220952-1228427852.png
1232094-20180306202445136-917678662.png

四、代码互评

我的化简代码
1232094-20180306210102863-265410413.png
1232094-20180306210124378-1090891757.png

同学的化简代码
1232094-20180306210132356-1324536986.png

我的化简代码使用辗转相除法运算效率比较比同学的高;而同学的做法效率较低,需要一直找数除到不能除为止,特别是数据大的时候,运算时间较长,占用空间较多。但我的化简代码也有不足之处,那就是需要在每个运算函数调用约分函数,一旦需要调用的次数多了,容易出现内存占用过多程序崩溃的问题,这点还有待改

五、结果展示

输入可化简的有理数
1232094-20180306202734306-1711477074.png

加法
1232094-20180306202818249-114946345.png

减法
1232094-20180306202843292-856901741.png

乘法
1232094-20180306202910834-623051846.png

除法
1232094-20180306202927833-99994828.png

分母为0
1232094-20180306203726742-1561706673.png

输入的有理数为负数
1232094-20180308191053400-1974655782.png

ps:以上运算均化简成功

六、总结

数据类型可以看作是带结构的数据元素的集合,他们直接存在某种特定的关系,如逻辑关系和运算操作
抽象数据类型一般包括数据对象、数据关系和基本运算,其中数据对象和数据运算的声明与数据对象的表示和数据运算的实现相互分离。其中,基本运算有两种参数:赋值参数,只为运算提供输入值;引用参数,以&开头,除可提供输入值外,还将返回运算值。

转载于:https://www.cnblogs.com/ljy1999/p/8516611.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值