《面向对象程序设计实验.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计实验.docx(18页珍藏版)》请在第一文库网上搜索。
1、1iaochenguniversity计算机学院实验报告【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、Ec1ipse集成开发环境和CDT插件;3、MinGW编译环境。实验设计方案(实验方法、步骤、操作过程、
3、设计型实验、实验数据记录表格):1、熟悉C+程序中源文件的组织方式。2、首先分析类的属性和行为,然后通过封装实现类。3、实现栈时,考虑栈容量的自动增长问题。实验预习成绩(涂改无效)合格口不合格口【四、实验过程、数据和实验结果记录】实验方法、步骤、操作过程的记录描述或程序代码。实验过程中输入/输出数据、程序运行结果的记录。(可加附页)2.1Stackxpp:#inc1ude#inc1ude,Stack.husingnamespacestd;boo1Stack:isEmpty()(if(top+1)=base)returntrue;e1sereturnfa1se;boo1Stack:isFu11(
4、)if(top-base)=STACKSIZE)returntrue;e1sereturnfa1se;)boo1Stack:Pop(EIemType&m)if(!isEmpty()(m=*(a+top);top-;returntrue;1e1sereturnfa1se;boo1Stack:Push(E1emTypem)if(isFu11()(COUt,xENAu,end1;returnfa1se;Ie1se(top+;*(a+top)=m;returntrue;boo1Stack:GetTop(EIemType&m)(if(!isEmpty()(m=*(a+top);returntrue;)r
5、eturnfa1se;)boo1Stack:Print_Stack()if(isEmpty()(coutzEE,end1;returnfa1se;1for(inti=base;i=top;i+)cout*(a+i),;coutend1;returntrue;)Stack.h:#ifndefSTACK_H_INC1UDED#defineSTACK_H_INC1UDED#defineSTACKSIZEIOOO#defineE1emTypeintc1assStack(pub1ic:E1emType*a;inttop;intbase;pub1ic:Stack():top(-1),base(0)a二ne
6、wE1emTypeSTACKSIZE;)-Stack()(de1etea;Iboo1isEmpty();boo1isFu11();boo1Pop(EIemType&m);boo1Push(E1emTypem);boo1GetTop(EIemType&m);boo1Print_Stack();1;#endif/STACK_HJNC1UDEDMain.cpp#inc1ude#inc1ude,Stack.husingnamespacestd;intmain()(Stackstack_test;ints;cout请输入你要操作的序号end1;cout0退出,1判断栈是否为空,2判断栈是否满,3得到栈顶
7、元素”VVend1;cout4插入一个栈顶元素,5删除一个栈顶元素,6输出栈里的所有元素”vend1;whi1e(true)(cins;switch(s)(case0:return0;break;if(stack-test.isEmpty()cout”此栈目前是个空栈,请往里面插入元素”end1;e1secout”此栈不为空”end1;break;if(stack-test.isFu11()cout此栈目前已满end1;e1secout此栈还没满end1;break;E1emTypetop;if(stack-test.GetTop(top)cout此栈的栈顶元素为:topend1;e1seco
8、ut”得到栈顶元素失败vend1;break;cout”请输入你需要插入的栈顶元素的值:E1emTypem;cinm;if(stack_test.Push(m)COUt插入栈顶元素成功vend1;e1secout插入栈顶元素失败vend1;break;E1emTypen;if(stack-test.Pop(n)COUt此栈的栈顶元素为:你已将其删除”end1;e1secout删除栈顶元素失败end1;break;if(!stack_test.Print_Stack()cout输出失败vend1;break;defau1t:cout”你输出的操作数不在范围内,请重新输入vend1;break;2
9、.2Qucuc.cpp:#inc1ude#inc1udeQueue.huusingnamespacestd;boo1Queue:isEmpty()(returnfront_=rear_;)boo1Queue:isFu11()intt;t=(rear.+1)%QUEUESIZE;returnt=front_;boo1Queue:GetHeadAndEnd(E1emType&head,EIemType&end_)(if(!isEmpty()head=*(a+front_);end_=*(a+rear_-1);returntrue;returnfa1se;1boo1Queue:EnQueue(E1e
10、mTypem)(if(isFu11()(*(a+rear_)=m;rear_+;rear_%=QUEUESIZE;returntrue;)returnfa1se;)boo1Queue:DcQueue(E1emType&m)(if(!isEmpty()(m=*(a+front_);front_+;front_%=QUEUESIZE;returntrue;)returnfa1se;)boo1Queue:Print()(if(!isEmpty()(for(inti=front_;(i-1)!=rear_;i+)i%=QUEUESIZE;cout*(a+i)1coutend1;returntrue;c
11、outHKTCaH1yend1;returnfa1se;)Queue.h:#ifndefQUEUEHJNC1UDED#defineQUEUE_H_INC1UDED#defineQUEUESIZEIOOO#defineE1emTypeintc1assQueue(pub1ic:intfront前面intrear_;后面E1emType*a;pub1ic:Queue():front_(0),rear_(0)a=newE1emTypeQUEUESIZE;I-Queue()de1etea;Iboo1isEmpty();boo1isFu11();boo1GetHeadAndEndCE1emType&hea
12、d,EIemType&end_);boo1EnQueue(EIemTypem);boo1DeQueue(EIemType&m);boo1Print(););#endif/QUEUE_HNC1UDEDMain.cpp#inc1ude#inc1udeQueue.huusingnamespacestd;intmain()(Queuequeue_test;ints;cout请输入你要操作的序号end1;cout0退出1判断队列是否为空2判断队列是否满3得到队头和队尾元素”end1;COUt4插入一个队尾元素5删除一个队头元素6输出队列里的所有元素end1;whi1e(true)(cins;switch
13、(s)caseO:returnO;break;if(queue_test.isEmptyO)COUt”此队列目前是个空队列,请往里面插入元素”end1;e1secout此队列不为空vend1;break;if(queue-test.isFu11()cout此队列目前已满end1;e1secout此队列还没满vend1;break;EIemTypehead,end_;if(queue_test.GetHeadAndEnd(head,end_)(cout此队列的队头元素为“vheadend1;cout此队列的队尾元素为“vend_end1;)e1secout操作失败vend1;break;cout”请输入你需要插入的队尾元素的值:E1emTypem;cinm;if(queue-test.EnQueue(m)cout插入队尾元素成功end1;e1secout插入队尾元素失败vend1;break;E1emTypen;if(queuc-test.DeQueue(n)COUtv此队列的队头元素为:vnv,你已将其删除VVend1;e1secout删除队头元素失败vend1;break;if