2022年数据结构课程设计实验报告 .pdf





《2022年数据结构课程设计实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构课程设计实验报告 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、空间数据结构基础课程实习报告(测绘10 级)姓名班级学号环境与测绘学院名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 17 页 -1C+面向对象程序设计基础【实验简介】学会用算法语言C+描述抽象数据类型,使用模板建立数据结构。理解数据结构的组成分为两部分,第一部分是数据集(数据元素),第二部分是在此数据集上的操作。从面向对象的观点看,这两部分代表了对象的属性和方法。掌握用 C+描述数据结构的基本方法,即通过建立类来描述抽象数据类型。类的数据成员提供对象属性,成员函数 提供操作方法,方法是公共接口,用户通过调 用方法 实现对 属性的 访问。【实验内容】1.定义三维空间的坐标点TPo
2、int 2.描述三维空间的球TBall,实现其主要操作(如计算体积和表面积,输出空间坐标等)。【主要代码】头文件:TPoint.h:#ifndef TPOINT_H#define TPOINT_H#include using namespace std;class TPoint public:TPoint(double xx,double yy,double zz):x(xx),y(yy),z(zz)TPoint(TPoint&TP):x(TP.x),y(TP.y),z(TP.z)double getX()constreturn x;/取x坐标值double getY()constreturn
3、 y;/取y坐标值double getZ()constreturn z;/取z坐标值void DisplayTP()const cout(x,y,z)endl;/显示点的三坐标void Move(double Mx,double My,double Mz);/移动点的坐标private:double x,y,z;/点的三坐标;#endif TBall.h#ifndef TBALL_H#define TBALL_H#include TPoint.h const double PI=3.14159;class TBall 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 17 页 -p
4、ublic:TBall(TPoint SC,double R):sphCtr(SC),r(R)/构造函数TBall(TBall&TB):sphCtr(TB.sphCtr),r(TB.r)double getSurfArea()const;/计算球的表面积double getV olume()const;/计算球的体积TPoint getSphctr()return sphCtr;double getRadius()constreturn r;/取球的半径void Move(double Mx,double My,double Mz)sphCtr.Move(Mx,My,Mz);/在空间坐标系内移
5、动球void ChangR(double newR)r=newR;void DisBallInfo()const;/显示球体的基本信息private:TPoint sphCtr;/球心坐标double r;/球的半径;#endif 源文件:Define.cpp:#include#include TBall.h using namespace std;/TPoint/void TPoint:Move(double Mx,double My,double Mz)/移动点的坐标 x+=Mx;y+=My;z+=Mz;/TBall/double TBall:getSurfArea()const/计算球的
6、表面积 return 4*PI*r*r;double TBall:getVolume()const/计算球的体积 return(4.0/3)*PI*r*r*r;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 17 页 -void TBall:DisBallInfo()const/显示球体的基本信息 coutINFORMATION OF THIS BALL:endl;couttSPHERICAL CENTRE:;sphCtr.DisplayTP();couttRADIUS:rendl;couttSURFACE AREA:getSurfArea()endl;couttVOLUME:g
7、etV olume()endl;Main.cpp:#include#include TBall.h#includeTPoint.h using namespace std;void main()TPoint TP1(1,3,2);TBall TB1(TP1,7);TP1.DisplayTP();TB1.DisBallInfo();TB1.Move(3,2,5);TB1.ChangR(22);TB1.DisBallInfo();【实验过程】设计好点类和球类的相关属性和操作后,打开C+编译环境,建立两个空的头文件,分别输入点类和球类的声明代码。然后新建一个源文件,输入点类和球类的函数体实现代码。最
8、后新建主文件,对两个类的构造函数、复制构造函数、操作函数等进行调试,最后进行评估。【实验体会】初步了解了面向对象的编程方式,体会到了函数声明与实现分离的安全性。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 17 页 -2 链表的建立、合并与拆分【实验简介】链表是用链接存储的方式来表达线性表,它用指针表示结点间的逻辑关系,链表适用于插入或删除频繁,存储空间需求不定的情形。【实验内容】定义一个链表存储的线性表,除已给出的表元素插入、删除、查找等基本操作外,再提供表的合并、拆分和逆置等操作。在应用程序中建立两个整型的单链表对象A和B,应用线性表的基本操作对表的实例对象进行操作测试。1
9、.设线性链表A=(a1,a2,am),,B=(b1,b2,bm),按下列规则合并A,B 为线性表C的算法,即使得C=(a1,b1,am,bm,b(m+1),bn)当 mn C 表利用 A 表和 B 表中的结点空间构成。2.将 C 表原地逆置。3.将 C 表的中偶数和奇数分别链接为两个循环链表D 和 E。说明:每一次合并、拆分和逆置等操作的结果均要输出。【主要代码】单链表头文件:LinkedList.h#ifndef LINKEDLIST_H#define LINKEDLIST_H#include#include LinkNode.h template class LinkedList publ
10、ic:LinkedList()first=new LinkNode;/默认构造函数LinkedList(const T&x)first=new LinkNode(x);/带形参的构造函数LinkedList(LinkedList&L);/复制构造函数LinkedList()makeEmpty();/析构函数void makeEmpty();/将表置空int Length()const;/求表长度LinkNode*getHead()const return first;/取表头结点指针LinkNode*Search(T x);/搜索数据域为 x的结点LinkNode*Locate(int i)c
11、onst;/取i号表项的地址bool getData(int i,T&x)const;/取i号表项的数据名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 17 页 -void setData(int i,T&x);/用x修改第 i个元素的值bool Insert(int i,T&x);/在第i个元素后插入 x bool Remove(int i,T&x);/删除第 i个元素,x返回该元素的值bool IsEmpty()const/判断表空否,空则返回 true return first-link=NULL?true:false;void Output();/输出void Turn(
12、);/将单链表的指向倒转void Combine(LinkedList&A,LinkedList&B);/将两个单链表合并void Divide(LinkedList&D,LinkedList&E);protected:LinkNode*first;template/复制构造函数实现LinkedList:LinkedList(LinkedList&L)T value;LinkNode*srcptr=L.getHead();LinkNode*destptr=first=new LinkNode;while(srcptr-link!=NULL)value=srcptr-link-data;dest
13、ptr-link=new LinkNode(value);srcptr=srcptr-link;destptr=destptr-link;destptr-link=NULL;template/置空函数实现void LinkedList:makeEmpty()LinkNode*p;while(first-link!=NULL)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 17 页 -p=first-link;first-link=p-link;delete p;template/求长函数实现int LinkedList:Length()const LinkNode*p=first
14、-link;int count=0;while(p!=NULL)p=p-link;count+;return count;template/搜索函数实现LinkNode*LinkedList:Search(T x)LinkNode*current=first-link;while(current!=NULL)if(current-data=x)break;else current=current-link;return current;template/定位函数实现LinkNode*LinkedList:Locate(int i)const if(i0)return NULL;LinkNode
15、*current=first;名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 17 页 -int k=0;while(current!=NULL&klink;k+;return current;template/取值函数实现bool LinkedList:getData(int i,T&x)const if(i=0)return NULL;LinkNode*current=Locate(i);if(current=NULL)return false;else x=current-data;return true;template/修改函数实现void LinkedList:set
16、Data(int i,T&x)if(i=0)return;LinkNode*current=Locate(i);if(current=NULL)return;else current-data=x;template/插入函数实现bool LinkedList:Insert(int i,T&x)LinkNode*current=Locate(i);if(current=NULL)名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 17 页 -return false;LinkNode*newNode=new LinkNode(x);newNode-link=current-link;c
17、urrent-link=newNode;return true;template/删除函数实现bool LinkedList:Remove(int i,T&x)LinkNode*current=Locate(i-1);if(current=NULL|current-link=NULL)return false;LinkNode*del=current-link;x=del-data;delete del;return true;template/输出函数实现void LinkedList:Output()LinkNode*current=first-link;while(current!=NU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构课程设计实验报告 2022 数据结构 课程设计 实验 报告

限制150内