- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
抽象数据类型的实现
实验0:抽象数据类型实现erimeter;}
typedef struct circle *Circle;
操作:
Circle createCircle(float r)
创建半径为r的圆
float getArea(Circle c)
求圆的面积
float getPerimeter (Circle c)
求圆的周长
具体操作如下:
首先启动启动visual c++新建一个工程命名为circle,紧接着分别新建头文件circle.h和源文件circle.cpp、以及主函数main.cpp。
其中文件中的定义为:
struct circle;
typedef struct circle *Circle;
Circle createCircle(float r);
float getArea(Circle c);
float getPerimeter (Circle c);
主函数main.cpp中的程序算法为:
#includestdio.h
#includecircle.h
void main()
{
float r;
Circle acircle;
printf(please input a radius to r);
scanf(%f,r);
acircle=createCircle(r);
printf(the areas=%f\n,getArea(acircle));
printf(the perimeter=%f\n,getPerimeter(acircle));
}
源文件circle.cpp中的调用函数及其主要算法:
#includestdio.h
#includestdlib.h
#includecircle.h
struct circle
{
float r;
float area;
float perimeter;
};
Circle createCircle( float r) /* 创建半径为r的圆 */
{
Circle newcircle=(Circle)malloc(sizeof(struct circle));
if(newcircle!=NULL)
{
newcircle -r=r;
newcircle -area=3.14f*r*r;
newcircle -perimeter=2*3.14f*r;
return newcircle;
}
else free(newcircle);
printf(Out of space!!\n); /* 存储分配失败 */
return NULL;
}
float getArea(Circle c)
{
return c-area;
}
float getPerimeter (Circle c)
{
return c- perimeter;
}
3、实验结果
4、实验分析
结构体是抽象的数据类型,在头文件中定义该数据之时不必注明过程。同时在主函数中必须在函数之前表明相关的调用函数以及库函数名,否则连最简单的Printf到最后都不能识别。最值得注意的是scanf(%f,r);如果其中取地址符号“”漏写,即使编译和组件程序都没有错误,但是到输入数据之时则会出现无可预知的错误,假如是大型的程序代码,要回过头来检验该错误时是相当的困难,所以在格式化输入时也是相当值得小心和注意的。还有就是定义数据类型的时候不能重复定义同一个变量,这样会出现相应的错误,而且定义的变量不能在使用之时而使用不同的基类型的数据进行运算,解决措施则是在数据后加相应强制性后缀,通过改变数据的类型使得数据前后有统一性。最后则是不管用任何语言编写程序代码的过程中,逻辑性和函数性问题解决后,还有就是像“;”和用中文输入法输入的符号都会最终使得编译器无法识别,以致程序无法正常的运行。
5、实验总结
通过本次抽象数据类型的实现试验以及书本的相关内容,另我认识到了抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。抽象数据类型的描述包括给出抽象数据类型的名称、数据的集合、数据之间的关系和操作的集合等方面的描述。抽象数据类型的设计者根据这些描述给出操作的具体实现,抽象数据类型的使用者依据这些描述使用抽象数据类型。
《数据结构与算法分析》实验报告
- 1 -
您可能关注的文档
- 护理常规.doc
- 护理工作质量控制标准.doc
- 护理常见护理问题及护理措施.doc
- 护理干预在慢阻肺稳定期便秘患者中的应用及其对生活质量的影响.doc
- 护理干预在肝硬化门脉高压并发上消化道出血患者中的临床护理.doc
- 护理干预对于老年功能性消化不良患者抑郁症状的影响作者陈耀翠.doc
- 护理干预对体外震波碎石术后结石复发的影响5.doc
- 护理干预对动静脉内瘘成熟及使用时间的影响777777.doc
- 护理干预对急性呼吸衰竭无创通气病人的影响.doc
- 护理干预对小儿秋季腹泻的影1.doc
- 共享自习室市场2025年用户付费意愿与运营成本分析.docx
- 针对性2025年跨境电商办公用品电商仓储物流配送中心规划报告.docx
- 2025年智能垃圾分类跨境资源化利用产业园绿色供应链管理策略研究.docx
- 东南亚跨境电商市场本地化策略与市场拓展报告.docx
- 工业互联网安全防护体系在网络安全防护体系优化升级中的应用.docx
- 过敏医疗市场细分领域竞争格局与2025年发展前景分析报告.docx
- 教育机构线上招生招生政策解读与案例分析.docx
- 高中数学计算能力培养与教学案例研究教学研究课题报告.docx
- 高中信息技术课程网络安全素养评价与防护能力提升路径研究教学研究课题报告.docx
- 高中物理:氧化石墨烯TFN复合膜海水淡化实验中的物理量测量与教学教学研究课题报告.docx
文档评论(0)