ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:107.55KB ,
资源ID:17065839      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17065839.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象程序设计课程实验报告Word文件下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

面向对象程序设计课程实验报告Word文件下载.docx

1、 /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&/赋给p指栈,返回pvoid print(const STACK*const p); /打印p指向的栈元素void destroySTACK(STACK*const p); /销毁p指向的栈,释放1.2需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2.系统设计2.1概要设计函数结构图见图1.1图1.1总体流程图见图1.2图1.22.2详细设计void initSTACK(STACK *co

2、nst p, int m)入口参数:int m出口参数:无功能:初始化栈,可存m个元素s)const STACK&s用s初始化p指空栈int size (const STACK *const p) int max返回p指的栈的最大元素个数maxint howMany (const STACK *const p) int pos返回p指的栈的实际元素个数posint getelem (const STACK *const p, int x) int xelemm取下标x处的栈元素STACK *const push(STACK *const p, int e) int e(*this)将e入栈,并

3、返回pe) int &e出栈到e,并返回ps) STACK&赋s给p指栈,返回pvoid print(const STACK*const p) 打印p指向的栈元素void destroySTACK(STACK*const p) 销毁p指向的栈,释放3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图1.3图1.35.特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。6.过程和体会6.1遇到的主要问题和解决方法输出结果数字与

4、预计不同,检查后发现原因是变量初始值未设置。6.2课程设计的体会本次实验主要还是通过回顾C语言中栈的知识完成在C+上的编程,所以总体过程没有出现太大的问题;同时也对const变量有了进一步的认识。7.源码和说明7.1文件清单及其功能说明experiment1.cpp源码experiment1.exe可执行文件。7.2用户使用说明书experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#includemalloc.hstdlib.hstruct STACK /栈能存放的最大元素个数 /栈实际已有元素个数,栈空时pos=0; /初始化p指向的栈:

5、最多m个元素 /用栈s初始化p指向的栈 /返回p指向的栈的最大元素个数max /返回p指向的栈的实际元素个数pos /出栈到e,并返回p /赋s给p指的栈,并返回p /打印p指向的栈 /销毁p指向的栈int main(int argc, char* argv) STACK *s1 = (STACK *)malloc(sizeof(STACK); STACK *s2 = (STACK *)malloc(sizeof(STACK); initSTACK(s1,10); push(s1,1); push(s1,2); push(push(s1,3),4); initSTACK(s2,*s1); pr

6、int(s2); printf(栈s1:n); print(s1); /assign(s2,*s1);栈s2: int a,b,c; a = size(s1);栈的最大元素个数是 %dn,a); b = howMany(s1);栈的实际元素个数是 %dn,b); c = getelem(s1,3);3处栈元素是是%dn,c); int x,y,z; pop(s2,x); pop(pop(s2,y),z);x= %d, y= %d, z= %d n,x,y,z); destroySTACK(s2); destroySTACK(s1); getchar(); return 0;void initS

7、TACK(STACK *const p, int m) /初始化p指向的栈: p-elems = (int*)malloc(m*sizeof(int*); if(!p-elems) return;pos = 0;max = m; int i; for(i=0;imax);i+)elemsi = 0;s) /用栈s初始化p指向的栈elems = (int*)malloc(s.max)*sizeof(int);pos = s.pos;max = s.max;(s.pos); elemsi=s.elemsi;%dn,p-elemsi); int size (const STACK *const p)

8、 /返回p指向的栈的最大元素个数max return p-max;int howMany (const STACK *const p) /返回p指向的栈的实际元素个数pospos;int getelem (const STACK *const p, int x) /取下标x处的栈元素 if(p=NULL) return NULL; else if(xpos)不存在元素nelemsx;STACK *const push(STACK *const p, int e) /将e入栈,并返回p if(p-pos)max)elemsp-pos=e;pos+; return p;栈满ne) /出栈到e,并返

9、回ppos)=0)栈为空n e=p-elems(p-pos)-1; (p-pos)-;s) /赋s给p指的栈,并返回p if(p=NULL | &s=NULL) free(p-elems); /free(p); /STACK *p = (STACK *)malloc(sizeof(STACK); initSTACK(p,s);void print(const STACK*const p) /打印p指向的栈 if(p = NULL) else if(p-pos = 0)pos);%d void destroySTACK(STACK*const p) /销毁p指向的栈 free(p);栈已销毁n实

10、验二.面向对象的整型栈编程整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems; const int max; /栈实际已有元素个数,栈空时pos=0;public:STACK(int m); /初始化栈:STACK(const STACK& /用栈s拷贝初始化栈int size ( ) const; /返回栈的最大元素个数maxint howMany ( ) const; /返回栈的实际元素个数posint getelem (int x) cons

11、t; push(int e); /将e入栈,并返回栈 pop(int & /出栈到e,并返回栈 assign(const STACK& /赋s给栈,并返回被赋值的栈void print( ) const; /打印栈STACK( ); /销毁栈采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。STACK(int m) 初始化栈:返回值:用栈s拷贝初始化栈int size ( ) const返回栈的最大元素个数max最大元素个数maxi

12、nt howMany ( ) const返回栈的实际元素个数pos元素数目posint getelem (int x) const 下标为x的元素 push(int e)将e入栈栈的引用e)出栈到e,并返回栈使用栈s给栈p赋值void print( ) const打印栈STACK( ) 销毁栈测试结果见图2.1图2.1完成了初定目标,无其他特点。人机交互需要进一步完善。由于第一次使用c+面向对象编写程序,开始不明白对象的生成及使用。在和同学老师的沟通和交流中,慢慢学会了编程的方法。C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互相借鉴,这样就减少了在理解上的难度。experim

13、ent2.cpp源码experiment2.exe可执行文件。experiment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。#include stringusing namespace std;STACK:STACK(int m):elems(new intm),max(m),pos(0)s):elems(new ints.size(),max(s.size(),pos(s.howMany() for(int i=0; elemsi=s.getelem(i); cout复制构造成功endl;int STACK:size() const return max;ho

14、wMany() const return pos;getelem (int x) const return elemsx; STACK:push(int e) if(posmax) elemspos=e; pos+; else coutfulln; return *this;pop(int &e) if(pos=0)empty stackreturn *this; pos-; e = elemspos;出栈成功assign(const STACK&s) delete elems;/ elems = new int s.size();/ max = s.size(); pos = s.howMa

15、ny();s.howMany(); elemsi = s.getelem(i);void STACK:print( ) const栈的元素为:elemsi STACK()/ elems= 0; / max = 0; pos = 0;析构完成int main() STACK s(7); s.push(5); s.push(7); s.push(9); s.push(11); s.print(); s.pop(i);出栈元素 STACK p(s);容量p.size()当前元素数目p.howMany();实验三.基于算符重载的整型栈编程 /用栈s拷贝初始化栈virtual int size ( )

16、const;virtual operator int ( ) const;virtual int operator (int x) const;/取下标x处的栈元素virtual STACK& operator(int & /出栈到e,并返回栈 operator=(const STACK&/赋s给栈,并返回被赋值的栈virtual void print( ) const; /打印栈virtual STACK( ); /销毁栈采用面向对象的C+语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个整型元素、出栈等操作。初始化定义一个类,分配一个数组空间来存储栈内元素信息,然后初始化为0; 实现入栈则需要将入栈元素e放入栈内,采用了先判断栈的最大容量够不够的问题,如果不够重新分配空间,并且让e入栈,将当前元素pos加一;然后返回栈结构。 实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素赋给一个变量然后将当前元素pos减一;返回栈结构。实现栈的赋给即需要将s1栈内的元素依次赋给s2栈的,当前元素也需一致

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1