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

本文介绍了使用ADT抽象数据类型实现有理数的过程,包括数据对象定义、基本操作如加减乘除的设计与实现,并展示了如何化简分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.作业内容

  • 用ADT的抽象数据模型描述你的有理数数据类型
ADT Rational{
    数据对象:
        D={e1,e2|e1,e2属于整数类型}
    数据关系:
        R={<e1,e2>|e1为有理数分子,e2为有理数分母}
    基本操作:
        InitRational(&T,e1,e2):构造有理数T,e1为有理数分子,e2为有理数分母
        DestroyRational(&T):销毁有理数T
        AddRational(T1,T2,&T3):有理数T1,T2相加,结果存入有理数T3
        SubRational(T1,T2,&T3):有理数T1,T2相减,结果存入有理数T3
        MulRational(T1,T2,&T3):有理数T1,T2相乘,结果存入有理数T3
        DivRational(T1,T2,&T3):有理数T1,T2相除,结果存入有理数T3
        int gcd(a,b):求最大公约数 
}ADT Rational

2.数据结构、函数说明(截图展示你的头文件;头文件代码加入注释)

1232047-20180308005045040-826993415.png

3.代码实现说明

1232047-20180308011105589-2061829755.png

  • 做法:输入两个有理数分子、分母并构造,调用四则运算;

1232047-20180308010153671-2012692425.png

  • 做法:动态分配存储空间,分别把2个变量分子、分母放入e1、e2中;

1232047-20180308010704045-1992425300.png

  • 做法:利用辗转相除法,不断取余,直到求出最大公约数,商为0;

1232047-20180308011504555-2015369860.png

  • 做法:把有理数分子、分母都通分,然后相加,调用公约数函数,约去,化成最简分数;

1232047-20180308011730725-922457001.png

  • 做法:把有理数分子、分母都通分,然后相减,调用公约数函数,约去,化成最简分数;

1232047-20180308011842900-1358649244.png

  • 做法:把有理数分子、分母各自相乘,然后,调用公约数函数,约去,化成最简分数;

1232047-20180308011940675-816782020.png

  • 做法:把第一个有理数与第二个有理数的倒数之间进行相乘,然后,调用公约数函数,约去,化成最简分数;

1232047-20180308010512450-1273068865.png

  • 做法:释放申请的空间T,销毁;

4.结果展示

  • 最后功能实现和出错处理:
    1232047-20180308013133732-891599485.jpg

5.总结

通过这次作业,对数据结构及抽象数据类型的理解主要有以下几点:

  • 数据结构,是对于所包含的数据对象进行实现最终结果功能的一种操作,不仅要考虑到研究的对象,还要有其对应关系,以及如何设计算法能让程序更简洁、高效的具体算法的实现;
  • 抽象数据类型,仅仅只是对数据类型的一种描述,而描述是抽象的,即其使用的方法没有具体实现,只是写出总的大纲,写出每个操作做什么,而非如何做,只是一种算法;

转载于:https://www.cnblogs.com/78tian/p/8526207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值