数据结构实验报告一C基础实验.docx_第1页
数据结构实验报告一C基础实验.docx_第2页
数据结构实验报告一C基础实验.docx_第3页
数据结构实验报告一C基础实验.docx_第4页
数据结构实验报告一C基础实验.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告一C+基础实验班级_2010XXX_ 学号_2010XXXX_ 姓名_HoogLe_ 专业_XXXX_一、 实验目的:(1) 掌握类与对象的基本知识点(2) 掌握引用、指针的应用(3) 掌握函数模板、类模板的应用(4) 利用time函数实现算法评价的事后统计方法(5) 熟悉抽象数据类型的表示和实现方法二、 实验内容:1、利用函数模板,实现输入三个数(可以是三个整形或浮点数等),并按由大到小的进行排序后输出。#include _using namespace std_;_template_swap1(_Type_ *p1,_Type_ *p2) _Type_ p; p=*p1; *p1=*p2; *p2=p;void main()_int_ n1,n2,n3; coutn1n2n3; if (n1n2) _swap1(&n1,&n2)_; if (n1n3) _swap1(&n1,&n3)_; if (n2n3) _swap1(&n2,&n3)_; cout排序后为:n1endsn2endsn3endl; _float_ e1,e2,e3; coute1e2e3; _if(e1e2) swap1(&e1,&e2)_;_if(e1e3) swap1(&e1,&e3)_;_if(e2e3) swap1(&e2,&e3)_; cout排序后为:e1endse2endse3endl;请粘贴出运行测试结果:2、 实现利用选择排序对存储10个数值的动态数组进行排序的通用模板。#include using namespace std;_template_void sort(_Type_ *a, int n) /*选择法排序,从小到大*/int i,j; _Type_ p; for (i=0;in;i+) for (j=i+1;jaj) p=*(a+i); /*(a+i)等价于ai; ai=aj_; _*(a+j)_=p; 试分析sort的时间复杂度:O();void main() int n; /数组大小变量coutn_;_int *p=new intn_; /申请动态数组存储空间coutn请输入数组中的n个数据:n;for(int i=0;ipi_;/从键盘读入数据_sort(p,n)_; /对数组中的数据进行排序 cout排序后数组中的数据:n; for(int j=0;jn;j+)_coutpj_; /输出数组中的数据coutendl; _delete p_; /释放所申请的存储空间 粘贴测试数据及运行结果:3. 算法事后统计分析方法,利用函数库time中clock_t类进行测试。实例:统计5,000,000,00次空的for循环的时间,单位是秒。这个头部定义了与时间有关的三种类型Clock_t,time_t,tm。),利用此方法,可对同一问题的不同算法加以性能测试。#include #include using namespace std;void main() volatile long unsigned t;/volatile 可变的/方法一:time_t start;start=time(NULL);/设置起始时间for(t=0;t500000000;t+);coutloop used difftime(time(NULL),start) seconds.n; /方法二:clock_t ti=clock();/取当前时钟时间 for(t=0;t500000000;t+); coutloop used (clock()-ti)/(CLK_TCK*1.0) seconds.n;/精度更高粘贴测试结果:4.问题描述:设计一个复数类,其抽象数据类型描述如下。 复数抽象数据类型描述: ADT complex isDate实部。虚部。OperationComplex构造函数 输入:要初始化实部的值realval与虚部的值imgval。动作:确定实部与虚部。GetReal 获得实部 输入:无 前置条件:无 动作:获得复数的实部 输出:返回该复数的实部。 后置条件:无GetImag 获得虚部 输入:无 前置条件:无 动作:获得复数的虚部 输出:返回该复数的虚部。 后置条件:无Operate + 重载加法运算符,实现两个复数相加输入:另一个所要相加复数对象 前置条件:无 动作:将两个复数的实部与虚部分别相加 输出:返回相加后的复数对象。 后置条件:无Operate - 重载减法运算符,实现两个复数相减输入:要减的复数对象 前置条件:无 动作:将两个复数的实部与虚部分别相减 输出:返回相减后的复数对象。 后置条件:无Display 输出复数输入:无 前置条件:无 动作:将复数的实部和虚部按一定格式输出 输出:无 后置条件:无end ADT complex利用类模板加以实现,使实部、虚部可以为int或float或double头文件complex.h实现类声明代码如下:#includetemplateclass complex private:T realval,imgval;public:complex() realval=imgval=0;complex(T real=0,T img=0)realval=real;imgval=img;complex();T GetReal();T GetImag(); complex operator+(complex& c);complex operator-(complex& c);friend ostream& operator(ostream& out,complex& d);friend istream& operator(istream& in,complex& d);void display();在complex.cpp文件中实现complex类中成员函数,实现代码如下:templateT complex:GetReal() return realval;templateT complex:GetImag() return imgval;templatecomplex complex:operator+(complex& c) realval+=c.realval; imgval+=c.imgval; return *this;templatecomplex complex:operator-(complex& c) realval-=c.realval; imgval-=c.imgval; return *this; templateostream& operator(ostream&out,complex& d) if(d.realval!=0&d.imgval!=0) outd.realval+d.imgvali; return out;else if(d.realval!=0&d.imgval=0)outd.realval; return out;else if(d.realval=0&d.imgval!=0)outd.imgvali; return out;else out0; return out;templateistream& operator(istream&in,complex& d) ind.reald.imag; return in;templatevoid complex:display()if(realval!=0&imgval!=0) coutrealval+imgvali;else if(realval!=0&imgval=0)coutrealval;else if(realval=0&imgval!=0)coutimgvali;else cout0;主程序代码如下:#include#includecomplex.hvoid main() complex com11(0,0),com12(0,0);complex com21(4,0),com22(0,3);complex com31(3,1.5),com32(8,-1.5);complex com41(-4,3.4),com42(-6,-8.1);complex com51(-5.4,1.2),com52(5.4,3.2);cout输入测试endl;com11.display();cout ;com12.display();coutendl;com21.display();cout ;com22.display();coutendl;com31.display();cout ;com32.display();coutendl;com41.display();cout ;com42.display();coutendl;com51.display();cout ;com52.display();coutendl; cout测试加法、减法endl;cout(com31)+(com32)=;cout(com31+com32)endl;cout(com41)-(com42)=;coutcom41-com42endl;cout测试提取实部虚部endl;coutcom51:com51.GetReal()-com51.GetImag()endl; coutcom52:com52.GetReal()-com52.GetImag()endl; cout通过提取实部虚部求Z1的共轭复数endl;complex z1(com1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论