欢迎来到天天文库
浏览记录
ID:33848528
大小:47.50 KB
页数:5页
时间:2019-03-01
《抽象数据类型的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《数据结构与算法分析》实验报告实验0:抽象数据类型的实现1、实验目的 了解抽象数据类型的表示和实现方法 会用C语言中已存在的数据类型来说明新的结构。 能用已实现的操作来组合新的操作。 熟悉C语言的程序设计2、实验内容输入圆的半径,输出圆的面积和周长。设计一个圆的抽象数据类型,并定义求圆的面积和周长的两个操作,输入数据是圆的半径r,圆的面积S=πr2,圆的周长L=2πr。圆的类型定义:structcircle{floatr;floatarea;floatperimeter;}typedefstructcircle*Circle;操作:Circlecr
2、eateCircle(floatr)创建半径为r的圆floatgetArea(Circlec)求圆的面积floatgetPerimeter(Circlec)求圆的周长具体操作如下:首先启动启动visualc++新建一个工程命名为circle,紧接着分别新建头文件circle.h和源文件circle.cpp、以及主函数main.cpp。-5-《数据结构与算法分析》实验报告1)其中文件中的定义为:structcircle;typedefstructcircle*Circle;CirclecreateCircle(floatr);floatgetArea
3、(Circlec);floatgetPerimeter(Circlec);2)主函数main.cpp中的程序算法为:#include#include"circle.h"voidmain(){floatr;Circleacircle;printf("pleaseinputaradiustor");scanf("%f",&r);acircle=createCircle(r);printf("theareas=%f",getArea(acircle));printf("theperimeter=%f",getPerimeter(
4、acircle));}3)源文件circle.cpp中的调用函数及其主要算法:#include#include#include"circle.h"-5-《数据结构与算法分析》实验报告structcircle{floatr;floatarea;floatperimeter;};CirclecreateCircle(floatr)/*创建半径为r的圆*/{Circlenewcircle=(Circle)malloc(sizeof(structcircle));if(newcircle!=NULL){newcircl
5、e->r=r;newcircle->area=3.14f*r*r;newcircle->perimeter=2*3.14f*r;returnnewcircle;}elsefree(newcircle);printf("Outofspace!!");/*存储分配失败*/returnNULL;}floatgetArea(Circlec){returnc->area;}floatgetPerimeter(Circlec){returnc->perimeter;-5-《数据结构与算法分析》实验报告}3、实验结果4、实验分析结构体是抽象的数据类型,在头文
6、件中定义该数据之时不必注明过程。同时在主函数中必须在函数之前表明相关的调用函数以及库函数名,否则连最简单的Printf到最后都不能识别。最值得注意的是scanf("%f",&r);如果其中取地址符号“&”漏写,即使编译和组件程序都没有错误,但是到输入数据之时则会出现无可预知的错误,假如是大型的程序代码,要回过头来检验该错误时是相当的困难,所以在格式化输入时也是相当值得小心和注意的。还有就是定义数据类型的时候不能重复定义同一个变量,这样会出现相应的错误,而且定义的变量不能在使用之时而使用不同的基类型的数据进行运算,解决措施则是在数据后加相应强制性后缀
7、,通过改变数据的类型使得数据前后有统一性。最后则是不管用任何语言编写程序代码的过程中,逻辑性和函数性问题解决后,还有就是像“;”和用中文输入法输入的符号都会最终使得编译器无法识别,以致程序无法正常的运行。5、实验总结-5-《数据结构与算法分析》实验报告通过本次抽象数据类型的实现试验以及书本的相关内容,另我认识到了抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使
8、用基本数据类型那样,十分方便地使用抽象数据类型。由此可知在定义或使用大量不同含义的数据之时,无需使用繁琐且难操作的数组等类
此文档下载收益归作者所有