《面向对象程序设计实验.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.isFu1.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”请输入你需要插入的队尾元