《面向对象程序设计实验.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验.docx(18页珍藏版)》请在课桌文档上搜索。
1、1.iaochenguniversity计算机学院实验报告【20142015学年第1学期【一、基本信息】【实验课程】面向对象程序设计【设课形式】独立E非独立口【课程学分】3【实验项目】类和对象【项目类型】基础E综合设计研究创新其它【项目学时】4【学生姓名】高伟建【学号】2013204547【系别专业】计算机科学与技术【实验班组】2013级1班组台【同组学生】【实验室名】A307【实验日期】2014.11.18【报告日期】2014.11.18【二、实验教师对报告的最终评价及处理意见】实验成绩:(涂改无效)指导教师签名:年月日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验
2、管理中心备案【三、实验预习】实验目的和要求:1、掌握声明类的方法,类和类的成员的概念以及定义对象的方法。2、初步掌握用类和对象编制基于对象的程序。3、学习检查和调试基于对象的程序。4、掌握类的构造函数和析构函数的概念和使用方法。5、掌握对象数组、对象的指针及其使用方法。实验内容和原理或涉及的知识点(综合性实验):1、用类实现顺序栈。2、用类实现循环队列栈。3、实现一个带有头结点的单链表,该链表可以插入整型元素。实验条件(实验设备、软件、材料等):1、装有Windows操作系统的微型计算机;2、Ec1.ipse集成开发环境和CDT插件;3、MinGW编译环境。实验设计方案(实验方法、步骤、操作过
3、程、设计型实验、实验数据记录表格):1、熟悉C+程序中源文件的组织方式。2、首先分析类的属性和行为,然后通过封装实现类。3、实现栈时,考虑栈容量的自动增长问题。实验预习成绩(涂改无效)合格不合格口【四、实验过程、数据和实验结果记录】实验方法、步骤、操作过程的记录描述或程序代码。实验过程中输入/输出数据、程序运行结果的记录。(可加附页)2.1Stackxpp:#inc1.ude#inc1.ude,Stack.husingnamespacestd;boo1.Stack:isEmpty()(if(top+1)=base)returntrue;e1.sereturnfa1.se;boo1.Stack:
4、isFu1.1.()if(top-base)=STACKSIZE)returntrue;e1.sereturnfa1.se;)boo1.Stack:Pop(EIemType&m)if(!isEmpty()(m=*(a+top);top-;returntrue;1e1.sereturnfa1.se;boo1.Stack:Push(E1.emTypem)if(isFu1.1.()(COUt,xENAu,end1.;returnfa1.se;Ie1.se(top+;*(a+top)=m;returntrue;boo1.Stack:GetTop(EIemType&m)(if(!isEmpty()(m=
5、*(a+top);returntrue;)returnfa1.se;)boo1.Stack:Print_Stack()if(isEmpty()(coutzEE,end1.;returnfa1.se;1for(inti=base;i=top;i+)cout*(a+i),;coutend1.;returntrue;)Stack.h:#ifndefSTACK_H_INC1.UDED#defineSTACK_H_INC1.UDED#defineSTACKSIZEIOOO#defineE1.emTypeintc1.assStack(pub1.ic:E1.emType*a;inttop;intbase;p
6、ub1.ic:Stack():top(-1.),base(0)a二newE1.emTypeSTACKSIZE;)-Stack()(de1.etea;Iboo1.isEmpty();boo1.isFu1.1.();boo1.Pop(EIemType&m);boo1.Push(E1.emTypem);boo1.GetTop(EIemType&m);boo1.Print_Stack();1;#endif/STACK_HJNC1.UDEDMain.cpp#inc1.ude#inc1.ude,Stack.husingnamespacestd;intmain()(Stackstack_test;ints;
7、cout请输入你要操作的序号end1.;cout0退出,1判断栈是否为空,2判断栈是否满,3得到栈顶元素”VVend1;cout4插入一个栈顶元素,5删除一个栈顶元素,6输出栈里的所有元素”vend1.;whi1.e(true)(cins;switch(s)(case0:return0;break;case 1:if(stack-test.isEmpty()cout”此栈目前是个空栈,请往里面插入元素”end1.;e1.secout”此栈不为空”end1.;break;case 2:if(stack-test.isFu1.1.()cout此栈目前已满end1.;e1.secout此栈还没满en
8、d1.;break;case 3:E1.emTypetop;if(stack-test.GetTop(top)cout此栈的栈顶元素为:topend1.;e1.secout”得到栈顶元素失败vend1.;break;case 4:cout”请输入你需要插入的栈顶元素的值:E1.emTypem;cinm;if(stack_test.Push(m)COUt插入栈顶元素成功vend1.;e1.secout插入栈顶元素失败vend1.;break;case 5:E1.emTypen;if(stack-test.Pop(n)COUt此栈的栈顶元素为:你已将其删除”end1.;e1.secout删除栈顶元
9、素失败end1.;break;case 6:if(!stack_test.Print_Stack()cout输出失败vend1.;break;defau1.t:cout”你输出的操作数不在范围内,请重新输入vend1.;break;2.2Qucuc.cpp:#inc1.ude#inc1.udeQueue.huusingnamespacestd;boo1.Queue:isEmpty()(returnfront_=rear_;)boo1.Queue:isFu1.1.()intt;t=(rear.+1)%QUEUESIZE;returnt=front_;boo1.Queue:GetHeadAndEn
10、d(E1.emType&head,EIemType&end_)(if(!isEmpty()head=*(a+front_);end_=*(a+rear_-1);returntrue;returnfa1.se;1boo1.Queue:EnQueue(E1.emTypem)(if(isFu1.1.()(*(a+rear_)=m;rear_+;rear_%=QUEUESIZE;returntrue;)returnfa1.se;)boo1.Queue:DcQueue(E1.emType&m)(if(!isEmpty()(m=*(a+front_);front_+;front_%=QUEUESIZE;r
11、eturntrue;)returnfa1.se;)boo1.Queue:Print()(if(!isEmpty()(for(inti=front_;(i-1)!=rear_;i+)i%=QUEUESIZE;cout*(a+i)1coutend1.;returntrue;coutHKTCaH1.yend1.;returnfa1.se;)Queue.h:#ifndefQUEUEHJNC1.UDED#defineQUEUE_H_INC1.UDED#defineQUEUESIZEIOOO#defineE1.emTypeintc1.assQueue(pub1.ic:intfront前面intrear_;
12、后面E1.emType*a;pub1.ic:Queue():front_(0),rear_(0)a=newE1.emTypeQUEUESIZE;I-Queue()de1.etea;Iboo1.isEmpty();boo1.isFu1.1.();boo1.GetHeadAndEndCE1.emType&head,EIemType&end_);boo1.EnQueue(EIemTypem);boo1.DeQueue(EIemType&m);boo1.Print(););#endif/QUEUE_HNC1.UDEDMain.cpp#inc1.ude#inc1.udeQueue.huusingname
13、spacestd;intmain()(Queuequeue_test;ints;cout请输入你要操作的序号end1.;cout0退出1判断队列是否为空2判断队列是否满3得到队头和队尾元素”end1.;COUt4插入一个队尾元素5删除一个队头元素6输出队列里的所有元素end1.;whi1.e(true)(cins;switch(s)caseO:returnO;break;case 1:if(queue_test.isEmptyO)COUt”此队列目前是个空队列,请往里面插入元素”end1.;e1.secout此队列不为空vend1.;break;case 2:if(queue-test.isF
14、u1.1.()cout此队列目前已满end1.;e1.secout此队列还没满vend1.;break;case 3:EIemTypehead,end_;if(queue_test.GetHeadAndEnd(head,end_)(cout此队列的队头元素为“vheadend1.;cout此队列的队尾元素为“vend_end1.;)e1.secout操作失败vend1.;break;case 4:cout”请输入你需要插入的队尾元素的值:E1.emTypem;cinm;if(queue-test.EnQueue(m)cout插入队尾元素成功end1.;e1.secout插入队尾元素失败vend
15、1.;break;case 5:E1.emTypen;if(queuc-test.DeQueue(n)COUtv此队列的队头元素为:vnv,你已将其删除VVend1.;e1.secout删除队头元素失败vend1.;break;case 6:if(!queue-test.Print()cout输出失败vend1.;break;defau1.t:cout你输出的操作数不在范围内,请重新输入vend1.;break;)2.31.ist.cpp#inc1.ude#inc1.ude1.ist.husingnamespacestd;boo1.1.ist:Append(intindex,E1.emType
16、m)(if(indexO)(returnfa1.se;)1.Node*p=Head;inti=O;whi1.e(p&inext;if(NU1.1.=p)returnfa1.se;11.Node*q=new1.Node();q-data=m;q-next=p-next;p-next=q;returntrue;)boo1.1.ist:Prepend(intindex,E1.emTypem)(if(index1)returnfa1.se;1.Node*p=Head;inti=O;whi1.e(p&inext;1if(NU1.1.=p)returnfa1.se;11.Node*q=new1.Node(
17、);q-data=m;q-next=p-next;p-next=q;returntrue;)boo1.1.ist:Remove(E1.emType&m,intindex)(if(index1)returnfa1.se;1.Node*p=Head;inti=O;whi1.e(NU1.1.!=p&inext;Iif(p=NU1.1.HNU1.1.=p-next)(returnfa1.se;I1.Node*q=p-next;p-next=q-next;m=q-data;de1.eteq;returntrue;1boo1.1.ist:Find(EIemType&m,intindex)(1.Node*q
18、;q=Head-next;if(index=O)(cout输出的index不合法end1.;returnfa1.se;Ifor(inti=1;q!=NU1.1.&inext;Im=q-data;returntrue;1void1.ist:Print()(1.Node*p=Head-next;whi1.e(p)(coutp-data;p=p-next;coutend1.;1.ist.h:#ifndef1.IST_HNC1.UDED#define1.IST.HJNC1.UDED#defineE1.emTypeintc1.ass1.Nodea(pub1.ic:1.Node*next;E1.emTyp
19、edata;pub1.ic:1.NodeOidata(O),next(NU1.1.);c1.ass1.ist(1.Node*Head;pub1.ic:1.ist()Head=new1.Node();)-1.ist()1.Node*p=Head;1.Node*q;whi1.e(!p)(q=p;p=p-next;de1.eteq;)boo1.Append(intindex,E1.emTypem);boo1.Prepend(intindex,E1.emTypem);boo1.Remove(EIemType&m,intindex);boo1.Find(E1.emType&m,intindex);voi
20、dPrint();;#endif/1.1.STj4NC1.UDEDMain.cpp:#inc1.ude#inc1.ude1.ist.husingnamespacestd;intmain()(1.ist1.ist_test;ints;intindex;E1.emTypem;cout请输入你要操作的序号end1.;coutv0退出1在index前插入元素2在index后插入元素end1.;cout,3删除index元素4查找index元素5输出所以元素end1.;whi1.e(true)(cout请输入你要操作的序号end1.;cins;switch(s)case0:return0;break;c
21、ase 1:index=O;cout”请输入插入元素的位置及数值”end1.;cinindexm;1.ist_test.Append(index,m);break;case 2:index=O;cout”请输入插入元素的位置及数值”end1.;cinindexm;1.ist_test.Prepend(index,m);break;case 3:index=O;cout请输入删除元素的位置vend1.;cinindex;1.ist_test.Remove(index,m);cout你已删除m元素end1.;break;case 4:index=O;E1.emTypem;cout请输入查找元素的位
22、置vend1.;cinindex;1.ist_test.Find(index,m);COUtv你查找的元素为mend1.;break;case 5:1.ist_test.Print();break;defau1.t:cout”你输出的操作数不在范围内,请重新输入vend1.;break;Ireturn0;F:编写程序shiyan2.3binDebugexpriment_two_1.ist.exe要de要in你天出除入素Wedendn .1Si找号S查号序1 4序的2年邛变X后插入元素5输出所以元素艘狗拼音输入法半二记录成绩(涂改无效)合格不合格口【五、实验结果分析】根据理论知识对所得到的实验数据或结果进行解释、分析。对实验结果所作的一般性的判断、归纳、概括,实验的心得体会、建议等。1,、熟练应用C+等语法.C和C+语言要掌握牢固。2、对于栈、队列、线性表等数据结构要熟练的掌握。3、正确理解类和对象的含义4、通过此次试验明白了自己的不足;知识的缺乏。