DS01--抽象数据类型

一、作业内容

1233559-20180304122339600-1780354680.png

二、数据结构、函数说明

1.头文件 common.h

1233559-20180304123014931-722315556.png

2.数据结构 Rational.h

1233559-20180304122847522-2032719814.png

三、代码实现说明

1.构造有理数T

1233559-20180306095602494-160156363.png

2.销毁有理数T

1233559-20180306095611589-2018796052.png

3.e返回有理数的分子或分母

1233559-20180306095618818-825438839.png

4.用e改变有理数的分子或分母

1233559-20180306095623904-337170787.png

5.有理数T1,T2相加

1233559-20180306095632927-186810035.png

6有理数T1,T2相减

1233559-20180306095639282-1042101569.png

7.有理数T1,T2相乘

1233559-20180306095645762-2065541122.png

8.有理数T1,T2相除

1233559-20180306095651286-1454941059.png

9.约分函数

1233559-20180306095716535-1925911474.png

四、互评

1233559-20180306222502059-1299770769.png


1233559-20180306222526605-149766418.png

我和聪灵在存放有理数时使用了不同类型的结构,我用的是指针,她用了结构体。

相较而言,她用结构体不仅在后续的操作中会方便,而且内存空间是由编译器按计划分配,当变量在作用域内使用完毕时,系统也会自动释放空间,不用人为操作。

我用的指针,需要注意对空间的释放,不然会造成野指针,但也有好处,我可以按需分配其所需要的内存大小以及存储位置。但由于本题是确定的分子和分母,内存的大小固定,而且也不用对存储位置进行改变,所以我认为聪灵使用的结构体更为高效。

五、结果展示

1.输入有理数不合法

1233559-20180306181214923-1849071515.png

2.返回与修改

1233559-20180306181653843-1099634632.png
1233559-20180306181737325-641927533.png

3.T1为0

1233559-20180306181328644-1506274798.png

4.T2为0

1233559-20180306181404227-1142275749.png

5.T1、T2均为0

1233559-20180306181440030-768486786.png

6.T3分母合法性(结果分母为负数)

1233559-20180306181510766-1170330768.png

六、总结

数据结构

在开课前,我就在想数据结构是什么呢?能用来干什么?都研究些什么呢?为什么要学这门课呢?

数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。通俗点其实数据结构=元素集合+元素间关系;而数据结构又能干什么呢?当我们以后面对更大更复杂的程序时,处理的数据必然也很大,但计算机只能做计算,它不能分析和理解,因此为了更好地管理这些数据,就需要把它们按照一定的方式组织起来,来方便我们的操作。简单来说数据结构能让数据以同种组织方式更好地存,从而更好地提升算法乃至程序的性能;而它研究的就是要使用怎样的逻辑结构和存储结构来处理问题;学习这门课能让我们在刚面对一个问题时,就能意识到有更好更高效的数据结构来解决问题,并根据数据大小和类型选择最合适的结构。

抽象数据类型

抽象数据类型=数据的逻辑结构+数据的抽象运算。简单理解就是在程序中对已有的数据类型抽象,定义了数据的取值范围以及对数据操作的集合,就有了抽象数据类型。而且它仅取决于其逻辑特征,而与计算机内部如何表示和实现无关。

七、上传代码到码云

1233559-20180306133358337-1460277907.png

1233559-20180306133410503-1314745680.png

1233559-20180306133419499-1276103218.png

1233559-20180306133427536-65412073.png

转载于:https://www.cnblogs.com/lmb171004/p/8504349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值