ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:39.37KB ,
资源ID:21564014      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21564014.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(空间数据结构基础实验指导书学年度Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

空间数据结构基础实验指导书学年度Word文档格式.docx

1、类的数据成员提供对象属性,成员函数提供操作方法,方法是公共接口,用户通过调用方法实现对属性的访问。一、C+面向对象程序设计范例1. 二维坐标点point的C+描述【实验目的】用面向对象的方法定义一个简单的抽象数据结构,本例实验内容为坐标点的数据结构。学会如何用C+语言描述数据结构和算法,理解将数据集和在此数据集上的操作分开描述的方法。【数据结构】将坐标点数据结构定义为一个C+类Point,在其内部分别定义数据成员和成员函数。 (1) 数据成员:一个平面直角坐标系中的点有两个属性,它们是x轴上的水平坐标值和y轴上的垂直坐标值。在Point类中,这两个属性分别由数据成员x和y来表示,定义为doub

2、le类型的私有数据成员。(2) 操作方法:定义成员函数,为类的使用者提供服务接口。先设计允许对点对象进行的操作,再用C+描述实现操作的算法,并定义为类Point的成员函数。在本例中提供了两个操作:move()函数将一个Point对象移至另一位置,Show()函数输出Point对象的数据成员值。两个构造函数,分别用于建立缺省参数的对象和带参数的对象。【算法提示】缺省构造函数Point()将新建立的坐标点对象初始化为原点位置(,)。带参数的构造函数Point(double px,double py)允许用户建立对象时指定初始坐标位置。点对象的移动操作move()函数需要在调用时给出新位置参数。输出

3、坐标值为无参函数。以下是平面直角坐标系中的点的类定义,main()函数对类Point的属性和操作进行测试。【程序1.1】#include class Point /平面直角坐标系中的点private: double x; /水平坐标值 double y; /垂直坐标值public: Point()x = 0; y = 0; /缺省构造函数 Point(double px,double py)x = px;y = py;/带参数的构造函数 void move(double mx,double my)x = mx;y = my;/移动位置(修改坐标值) void Show()coutx=x y=y

4、endl;/输出坐标值;void main() Point a,b(12.5,34.8); /建立两个Point对象 cout点a的位置:; a.Show(); /输出点a的坐标值点b的位置: b.Show(); /输出点b的坐标值 a.move(45.6,57.8);点a移动后的位置:2. 使用模板建立坐标点point的数据结构,直接表示抽象数据类型【实验目的】将程序1.1数据结构的类型参数化(模板),实现更高层次的数据抽象。【算法提示】 Point的数据成员不使用固定的类型定义,而是用typename说明的虚拟类型名ptType作为变量的类型,在定义Point类的对象时,再用C+的基本类型

5、将对象的数据成员的类型实例化。这样做的好处是可以使用同一个类来定义不同数据类型的对象,提高代码的利用率。【程序1.2】template class Point /平面直角坐标系中的点 ptType x; /虚拟类型的水平坐标值 ptType y; /虚拟类型的垂直坐标值 Point(ptType px, ptType py)x = px; void move(ptType mx,ptType my)x = mx; /移动位置(修改坐标值) Point a(24,36); /建立整型的Point对象float b(12.5,34.8); /建立浮点型的Point对象 a.move(25,18);

6、 b.move(45.6,57.8);点b移动后的位置:注:定义模板的关键字typename可以用class代替。如:class ptType class Point与例中的template class Point具有相同功能。3. 利用Point类定义矩形类Rectangle【实验目的】了解复合数据结构的描述方法。矩形是一个包含坐标点的复合数据结构,在C+程序中将坐标点和矩形分别定义为具有继承关系的两个类,即定义矩形类Rectangle为Point的派生类。使用派生类的形式定义一个数据结构,其主要目的是提高基类的代码利用率,并使派生类的结构得到简化。基类和派生类的定义体现了C+继承机制的运用

7、,最大程度地提高了数据结构的利用率。【数据结构】派生的矩形类Rectangle有四个数据成员,其中左下角坐标点x和y由基类Point定义,派生类Rectangle能够继承下来作为自己的数据成员。为了在派生类的成员函数中自由访问基类定义的数据成员,需要将这些数据成员定义为被保护的(protected)访问权限。矩形的宽度width和高度height在派生类中定义。在矩形类中这四个数据成员的访问权限是相同的。【算法提示】(1) 基类Point定义的成员函数都可以由派生类Rectangle继承,在矩形对象中可以直接使用。(2) 若用一个点对象为新的矩形对象初始化,注意构造函数的写法。对基类成员的赋值

8、由基类的拷贝构造函数完成,例如利用点对象p3定义的矩形对象rt4,实际上使用了Point类的缺省拷贝构造函数。如果基类成员初始化比较复杂,如含有内存分配等要求,就需要重新定义基类的拷贝构造函数。【程序1.3】class Point /二维坐标点类protected: double x,y; double Getx()return x; /返回坐标点的x值 double Gety()return y; /返回坐标点的y值 void Move(double mx,double my)x = mx; /移动坐标点的位置/输出坐标点的属性值class Rectangle:public Point/矩形

9、类(Point的派生类,Point对象为矩形左下角的坐标点) double width,height; /矩形的宽度和高度 Rectangle()width=0; height=0; x=0;y=0;/缺省构造函数 Rectangle(double a,double b,double c,double d):Point(a,b)/带参数的构造函数 width = c; height= d; Rectangle(Point &pn):Point(pn)/带参数的构造函数,由点pn定义矩形左下角的位置 width = 1; height = 1; double Area()return width

10、*height; /求矩形的面积 void Set(double a,double b)x=a;y=b; /重置矩形的左下角坐标 int Position(Point &pt); /求点pt相对于矩形的位置,返回-1(在矩形内),/ 0(在矩形边上)和1(在矩形外) void Judge(Point & /判断点pt相对于矩形的位置,给出提示 void Show(); /输出矩形的各属性值和面积int Rectangle:Position(Point &pt)/求点pt相对于矩形的位置 if(pt.Getx()x+width|pt.Gety()y+height) return 1; /在矩形外

11、 else if(pt.Getx()x & pt.Getx()y&pt.Gety()y+height) return -1; /在矩形内 else return 0; /在矩形边上void Rectangle:Judge(Point &pt) pt.Show(); Show(); switch(Position(pt) case 0:cout点在矩形边上endlbreak; case -1:点在矩形内 case 1:点在矩形外Show() /输出矩形的各属性值和面积rx=try=width=widthheight=heightarea=Area(),输出运算符),这是实现数据封装的常用技术。【

12、程序1.4】friend class Rectangle; /矩形类是点类的友元friend ostream &operator(Rectangle a); /重载关系运算符“”position(Point &pt) /求点pt相对于矩形的位置 if(pt.xpos.x+width|pt.ypos.y+height) return 1; else if(pt.xpos.x&pt.xpos.y&pt.ypos.y+height) return -1; /在矩形边上judge(Point &pt)/判断点pt相对于矩形的位置,给出提示 Point: /输出点pt的各属性值 switch(posit

13、ion(pt)Show() /输出矩形的位置、大小和面积pos.x,pos.y(Rectangle a) /重载关系运算符“”,比较矩形的面积 if(Area()a.Area() return 1;ostream &out,Rectangle &rg)/重载运算符输出矩形的各属性值 outrg.pos.xrg.pos.yrg.widthrg.heightrt3)cout矩形rt2比rt3大! else cout矩形rt3比rt2大!二、C+面向对象程序设计练习1. 定义三维空间的坐标点TPoint2. 描述三维空间的球TBall,实现其主要操作(如计算体积和表面积,输出空间坐标等)。第2章 线

14、性表了解线性数据结构,掌握顺序存储和链式存储的两种线性表的建立和使用方法。一、经典算法和例题1. 顺序表的模板类【实验目的】本例给出了较完整的顺序表的抽象数据类型定义,通过C+类模板的应用体现了数据抽象原理。【问题描述】定义一个顺序存储的线性表数据结构,在应用程序(main函数)中建立一个整型的线性表对象,在该表中进行插入、删除、查找和输出等操作。【数据结构】定义一个顺序存储的线性表类SeqList,数据成员包括表的存储数组,表的最大允许长度,表中最后元素下标等。定义常用的基本操作。(1) 在表示顺序表的SeqList类定义中,表元素的存储空间是数组data,采用动态内存分配方式。表的初始化工作由构造函数实现。(2) 顺序表的基本操作以公用接口形式(类的成员函数)提供。一般顺序表最常用的操作是输出、插入、删除、查找和求表长度等,其中数据量较大的输出操作采用运算符重载的方式来实现,以便用户能以习惯的cout形式输出表的全部元素。程序2.1给出顺序表的C+类声明和部分操作的实现。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1