面向对象程序设计课程实验总结报告

上传人:daj****de2 文档编号:198937278 上传时间:2023-04-10 格式:DOCX 页数:57 大小:200.03KB
返回 下载 相关 举报
面向对象程序设计课程实验总结报告_第1页
第1页 / 共57页
面向对象程序设计课程实验总结报告_第2页
第2页 / 共57页
面向对象程序设计课程实验总结报告_第3页
第3页 / 共57页
点击查看更多>>
资源描述
申科按衣暮课程实验报告课程名称:面向对象程序设计院系:专业班级:学号:姓名:指导教师:实验一.面向过程的整型栈编程11. 需求分析11.1题目要求11.2需求分析12. 系统设计22.1概要设计22.2详细设计34. 软件测试45. 特点与不足45.1技术特点45.2不足和改进的建议56. 过程和体会56.1遇到的主要问题和解决方法56.2课程设计的体会57. 源码和说明57.1文件清单及其功能说明57.2用户使用说明书 57.3源代码5实验二.面向对象的整型栈编程 121. 需求分析121.1题目要求121.2需求分析122. 系统设计132.1概要设计132.2详细设计133. 软件开发144. 软件测试145. 特点与不足145.1技术特点145.2不足和改进的建议156. 过程和体会157.1文件清单及其功能说明 157.2用户使用说明书 157.3源代码15实验三.基于算符重载的整型栈编程191. 需求分析191.1题目要求191.2需求分析192. 系统设计202.1概要设计202.2详细设计203. 软件开发204. 软件测试205. 特点与不足215.1技术特点215.2不足和改进的建议 216. 过程和体会216.1遇到的主要问题和解决方法216.2课程设计的体会 217. 源码和说明217.1文件清单及其功能说明217.2用户使用说明书 217.3源代码21实验四.面向对象的整型队列编程 251. 需求分析251.1题目要求251.2需求分析252. 系统设计263. 软件开发264. 软件测试265. 特点与不足265.1技术特点265.2不足和改进的建议266.1遇到的主要问题和解决方法266.2课程设计的体会 277源码和说明277.1文件清单及其功能说明277.2用户使用说明书 277.3源代码27实验五.基于组合的整型队列编程 311. 需求分析311.1题目要求311.2需求分析312. 系统设计313. 软件开发324. 软件测试325. 特点与不足325.1技术特点325.2不足和改进的建议326. 过程和体会326.1遇到的主要问题和解决方法326.2课程设计的体会 327. 源码和说明337.1文件清单及其功能说明337.2用户使用说明书 337.3源代码33实验六.基于继承的整型队列编程371. 需求分析371.1题目要求371.2需求分析382. 系统设计383. 软件开发384. 软件测试385. 特点与不足385.2不足和改进的建议386.过程和体会397源码和说明397.1文件清单及其功能说明397.2用户使用说明书 397.3源代码39实验一.面向过程的整型栈编程1. 需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向 栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C 语言定义,请将完成上述操作的所有函数采用面向过程的方法编程,然后写一个main 函数对栈的所有操作函数进行测试。struct STACK(int*elems;/申请内存用于存放栈的兀素intmax;栈能存放的最大兀素个数intpos;栈实际已有元素个数,栈空时pos=0;;void initSTACK(STACK *const p, int m); 初始化 p 指空栈:可存 m 个元素 void initSTACK(STACK *const p, const STACK&s); / 用 s 初始化 p 指空栈 int size (const STACK *const p);返回p指的栈的最大元素个数maxint howMany (const STACK *const p); 返回 p 指的栈的实际元素个数 pos int getelem (const STACK *const p, int x); 取下标 x 处的栈元素 STACK *const push(STACK *const p, int e); 将 e 入栈,并返回 p STACK *const pop(STACK *const p, int &e); /出栈到 e,并返回 pSTACK *const assig n(STACK*co nst p, con st STACK&s); 赋给 p 指栈,返 回 p void print(const STACK*const p); 打印 p 指向的栈元素 void destroySTACK(STACK*const p); 销毁 p 指向的栈,释放1.2需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈, 所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2. 系统设计2.1概要设计函数结构图见图1.1打印栈入栈、出栈取栈内元素初始化栈图1.1总体流程图见图1.2开始初始化出栈销毁栈图1.2void in itSTACK(STACK *con st p, i nt m)入口参数:int m出口参数:无功能:初始化栈,可存m个元素void in itSTACK(STACK *con st p, const STACK&s)入口参数:const STACK&s出口参数:无功能:用s初始化p指至栈int size (co nst STACK *con st p)入口参数:无出口参数:int max功能:返回p指的栈的最大元素个数maxint howMa ny (const STACK *co nst p)入口参数:无出口参数:int pos功能:返回p指的栈的实际元素个数posint getelem (const STACK *const p, int x)入口参数:int x出口参数:elemm功能:取下标x处的栈元素STACK *con st push(STACK *co nst p, i nt e)入口参数: int e出口参数:(*this)功能:将e入栈,并返回pSTACK *con st pop(STACK *con st p, i nt &e)入口参数: int &e 出口参数:(*this)功能:出栈到e,并返回pSTACK *const assig n(STACK*co nst p, con st STACK&s) 入口参数:STACK&s出口参数:(*this)功能:赋s给p指栈,返回p入口参数:无出口参数:无功能:打印p指向的栈元素void destroySTACK(STACK*const p)入口参数:出口参数:功能:销毁p指向的栈,释放3. 软件开发在Codeblocks编译环境下,使用C+语言编写4. 软件测试测试结果见图1.3图1.35. 特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不 了解的人可能需要花费更多时间去了解。6. 过程和体会6.1遇到的主要问题和解决方法输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2课程设计的体会本次实验主要还是通过回顾C语言中栈的知识完成在C+上的编程,所以总体 过程没有出现太大的问题;同时也对const变量有了进一步的认识。7. 源码和说明7.1文件清单及其功能说明experime ntl.cpp 源码experime nt1.exe 可执行文件。7.2用户使用说明书experimentl.cpp是程序的源码,可通过修改其中main函数中的变量来测试 各 个函数。7.3源代码#in clude#in clude#in cludestruct STACKint *elems; / int max;申请内存用于存放栈的元素/栈能存放的最大元素个数int pos;/栈实际已有元素个数,栈空时POS=0;/初始化p指向的栈:最void initSTACK(STACK *const p, int m);多m个元素void initSTACK(STACK *const p, const STACK&s); / 用栈 s 初始化 p 指向的栈int size (const STACK *con st p);返回p指向的栈的最大兀素个数maxint howMa ny (co nst STACK *co nst p);个数 返回p指向的栈的头际兀素 posint getelem (const STACK *const p, int x);取下标 x 处的栈兀STACK *con st push(STACK *co nst p, i nt e);将 e 入栈,并返回 pSTACK *con st pop(STACK *con st p, i nt &e);出栈到 e,并返回 pSTACK *const assig n(STACK*co nst p, con st STACK&s); / 赋 s 给 p 指的栈,并返回pvoid prin t(co nst STACK*co nst p);打印 p 指向的栈void destroySTACK(STACK*co nst p);销毁 p 指向的栈int main (i nt argc, char* argv)STACK *s1 = (STACK *)malloc(sizeof(STACK);STACK *s2 = (STACK *)malloc(sizeof(STACK); in itSTACK(s1,10);push(s1,1);push(s1,2); push(push(s1,3),4); ini tSTACK(s2,*s1);prin t(s2);printf( 栈 s1:n);prin t(s1);/assig n(s2,*s1);printf( 栈 s2:n);prin t(s2);int a,b,c;a = size(sl);printf(-栈的最大元素个数是 dn,a);b = howMa ny(s1);printf(”栈的实际元素个数是dn,b);c = getelem(s1,3);printf(3处栈元素是是dn,c);int x,y,z;pop(s2,x);pop(pop(s2,y),z);prin tf(x= %d, y= %d, z= %d n,x,y,z);destroySTACK(s2);destroySTACK(sl);getchar();return 0;)void initSTACK(STACK *const p, int m) / 初始化 p 指向的栈:最多 m 个元素(p-elems = (in t*)malloc(m*sizeof(i nt*);if(!p-elems)return;p-pos = 0;p-max = m;int i;for(i=0;imax);i+)p-elemsi = 0;)void in itSTACK(STACK *con st p, const STACK&s) / 向 用栈 s 初始化 p 指的栈(p-elems = (in t*)malloc(s.max)*sizeof(i nt);p-pos = s.pos;p-max = s.max;int i;for(i=0;ielemsi=s.elemsi;printf(%dn,p-elemsi);)返回p指向的栈的最大元素返回p指向的栈的实际元素int size (const STACK *con st p)个数 max(return p-max;int howMa ny (const STACK *co nst p) 个数posretur n p-pos;int getelem (const STACK *const p, i nt x)/取下标 x 处的栈元素if(p=NULL)return NULL;elseif(x(p-pos) printf(不存在元素n);elsereturn p-elemsx;STACK *con st push(STACK *co nst p, i nt e) (/将 e 入栈,并返回 pif(p=NULL) return NULL; elseif(p-pos)v=(p-max) (p-elemsp-pos=e; p-pos+;return p;)elseprin tf( 栈满 n);)STACK *con st pop(STACK *con st p, i nt &e) if(p=NULL)return NULL;else if(p-pos)=0)prin tf( 栈为空n);/出栈到e,并返回pelse e=p-elems(p-pos)-1; (p-pos)-;return p;STACK *const assig n(STACK*co nst p, con st STACK&s) / 赋 s 给 p 指的栈, 并返回pif(p=NULL | & s=NULL)return NULL;elsefree(p-elems);/free(p);/STACK *p = (STACK *)malloc(sizeof(STACK);ini tSTACK(p,s);return p;)void print(const STACK*const p)/ 打印 p 指向的栈int i;if(p = NULL)return;else if(p-pos = 0)prin tf(-栈为空 n);elsefor(i=0;ipos);i+)prin tf(%d ,p-elemsi);prin tf(n);void destroySTACK(STACK*const p) / 销毁 p 指向的栈free(p-elems);free(p);printf(-栈已销毁 n);实验二.面向对象的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为 空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象 的C+语言定义,请将完成上述操作的所有函数米用C+编程,然后写class STACK(/申请内存用于存放栈的元素七栈co存放ems; /最大元素个数栈实际已有元素个数,/空时 pos=0;int pos;/public:初始化栈:最多m个元素STACK(i nt m);返回栈的最大元素个数max返/回栈的实际元素个数pos/取下标x处的栈元素将e/入栈,并返回栈出栈到e,并返回栈/STACK(const STACK&s); 用栈s拷贝初始化栈int size ( ) con st;int howMa ny ( ) con st;int getelem (int x) con st;STACK & push(i nt e);STACK & pop( int & e);个main函数对栈的所有操作函数进行测试。STACK& assign(const打印栈STACK&s);/赋s给栈,并/销毁栈返回被赋值的栈void prin t( ) con st;STACK(););1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否 为空、向栈顶添加一个整型元素、出栈等。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定 一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(i nt m)功能:初始化栈:最多m个元素返回值:无STACK(co nst STACK&s)功能:用栈s拷贝初始化栈返回值:无int size ( ) const功能:返回栈的最大元素个数max返回值:最大元素个数maxint howMa ny ( ) const功能:返回栈的实际元素个数pos 返回值:元素数目posint getelem (int x) const功能:取下标x处的栈元素返回值:下标为x的元素STACK & push(i nt e)功能:将e入栈返回值:栈的引用STACK & pop(i nt &e)功能:出栈到e,并返回栈返回值:栈的引用STACK & assig n(co nst STACK&s)功能:使用栈s给栈p赋值 返回值:栈的引用void prin t( ) const功能:打印栈返回值:无STACK()功能:销毁栈返回值:无3. 软件开发在Codeblocks编译环境下,使用C+语言编写4. 软件测试测试结果见图2.1C:UsersdellDesktopC + + x pe rt m en t2. e :-: e一 口 X楮的兀素为M7 911i.L.i 44ijj J# * 声 tA出栈您功出柱兀.秦U 复制构造成功 容量7H刖兀素数目3析构兀成析构兀成 Process returned 0 (0x0) execution til Fress any key to continue.Tie : 0t ()94 sV图2.15. 特点与不足5.1技术特点完成了初定目标,无其他特点5.2不足和改进的建议人机交互需要进一步完善。6. 过程和体会6.1遇到的主要问题和解决方法由于第一次使用C+面向对象编写程序,开始不明白对象的生成及使用。在 和同学老师的沟通和交流中,慢慢学会了编程的方法。6.2课程设计的体会C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互相 借鉴,这样就减少了在理解上的难度。7. 源码和说明7.1文件清单及其功能说明experime nt2.cpp 源码 experime nt2.exe 可执行文件7.2用户使用说明书experiment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试各 个函数。7.3源代码#in elude #in clude using n amespace std; class STACK(int *constelems;申请内存用于存放栈的元素max; 栈能存放的最const int 大元素个数int pos;栈实际已有元素个数,栈空时pos=0;public:STACK(i nt初始化栈:最多m个元素m);STACK(const STACK&s); /用栈 s 拷贝初始化栈 int size ( ) con st; 返回栈的最大元素个数max int howMa ny ( ) const; 返回栈的实 际元素个数 pos int getelem (int x) con st; 取下标x处的栈元素 STACK& push(int e);/将e入栈,并返回栈STACK& pop(int &e); 出栈到e并返回栈STACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈 void print( ) con st;/ 打印栈STACK( );/ 销毁栈;STACK:STACK(i nt m):elems( new in tm),max(m),pos(0)( STACK:STACK(co nst STACK&s):elems( newin ts.size(),max(s.size(),pos(s.howMa ny()for(i nt i=0;ipos;i+)elemsi=s.getelem(i);cout复制构造成功endl;int STACK:size() con streturn max;int STACK:howMa ny() constreturn pos;int STACK:getelem (int x) con streturn elemsx;STACK & STACK:push(i nt e)if(posvmax)elemspos=e;pos+;else coutfulln;return *this;STACK & STACK:pop( int & e)( if(pos=0) coutempty stack;return *this;pos-;e = elemspos;cout出栈成功; return *this;STACK & STACK:assig n(co nst STACK&s) int i; delete elems;/elems = new in t s.size();/max = s.size();pos = s.howMa ny();for(i=0;is.howMa ny ();i+) elemsi = s.getelem(i); return *this;void STACK:pri nt( ) con st int i;coutvv栈的元素为:;for(i=0;ipos;i+) coutelemsi; coute ndl;STACK:STACK() delete elems;/ elems= 0;/ max = 0;pos = 0;coutvv析构完成;int mai n()STACK s(7);s.push(5);s.push(7);s.push(9);s.push(11);s.pri nt();int i;s.pop(i);cout出栈元素vvivvendl;STACK p(s);cout容量vvp.size()ve ndl; cout当前元素数目 vvp.howMany();实验三.基于算符重载的整型栈编程1. 需求分析1.1题目要求virtual int size ( ) con st;virtual operator int ( ) con st;virtual int operator (int x) con st;/virtual STACK & operator(i nt e);virtual STACK & operator(i nt &e);返回栈的最大元素个数max返回栈的实际元素个数pos取下标x处的栈元素/将e入栈,并返回栈出栈到e,并返回栈整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向 栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语 言定义,请将完成上述操作的所有函数米用C+S程,然后写个main函数对栈的 所有操作函数进行测试。申请内存用于存放栈的兀素栈能存放的最大兀素个数栈实际已有元素个数,栈空时pos=0;class STACK(int *const elems; /const int max;int pos;初始化栈:最多m个元素用栈s拷贝初始化栈public:STACK(i nt m);STACK(const STACK&s);virtual STACK& operator=(const STACK&s); 赋 s 给栈,并返回被赋值的栈打印栈销毁栈virtual void prin t( ) con st;virtual STACK();1.2需求分析采用面向对象的C+语言定义,构建整型栈并对其进行判断栈是否为空、向栈 顶添加一个整型元素、出栈等操作。2. 系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定 一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计初始化定义一个类,分配一个数组空间来存储栈内元素信息,然后初始化为0;实现入栈则需要将入栈元素e放入栈内,采用了先判断栈的最大容量够 不 够的问题,如果不够重新分配空间,并且让e入栈,将当前元素pos加一;然后 返回栈结构。实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素赋 给一个变量然后将当前元素pos减一;返回栈结构。实现栈的赋给即需要将si栈内的元素依次赋给s2栈的,当前元素也需致并且 返回新的栈结构。3. 软件开发在Codeblocks编译环境下,使用C+语言编写4. 软件测试测试结果见图3.1图3.15.特点与不足5.1技术特点使用了符号重载,在一定程度上简化了函数。5.2不足和改进的建议在使用符号重载时需要特别注意,防止与其他操作符混淆。6. 过程和体会6.1遇到的主要问题和解决方法对于符号重载,刚开始不会调用函数,之后通过查阅书籍,明白了重载的含义。6.2课程设计的体会本次实验以实验二为基础,通过使用符号重载来更简单的实现实验目的。7. 源码和说明7.1文件清单及其功能说明experime nt3.cpp 源码experime nt3.exe 可执行文件。7.2用户使用说明书experiment3.cpp是程序的源码,可通过修改其中main函数中的变量来测试各 个函数。7.3源代码#in elude #in clude using n amespace std;class STACK(int *const elems;申请内存用于存放栈的元素const int max; 栈能存放的最大元素个数int pos;栈实际已有元素个数,栈空时pos=0;public:STACK(int m);初始化栈:最多m个元素STACK(const STACK&s);/用栈s拷贝初始化栈virtual int size ( ) const;返回栈的最大元素个数 maxvirtual operator int () con st;返回栈的实际元素个数 posvirtual in t operator (i nt x) con st; 取下标 x 处的栈元素virtual STACK& operator(int e);/将 e 入栈并返回栈virtual STACK& operator(int &e); /出栈到 e,并返回栈 virtual STACK& operator=(const STACK&s); /赋 s 给栈,并返回被赋值的栈 virtual void prin t() con st;/打印栈virtual STACK( );/ 销毁栈);STACK:STACK(i nt m):elems( new in tm),max(m),pos(0)( STACK:STACK(co nst STACK&s):elems( newin ts.max),max(s.max),pos(s.pos)(for(i nt i=0;ipos;i+)elemsi=s.elemsi;int STACK:size ( ) con st(return max;STACK:operator int () con st(return pos;int STACK:operator (int x) con st(return elemsx;STACK & STACK:operatormax)coutvv栈满;else*(elems+pos)=e;pos+;STACK & STACK:operator(i nt &e)if(pos=0)cout栈空;elsee=*(elems+pos-1);pos-;return (*this);STACK & STACK:operator=(co nst STACK&s) delete elems;*(i nt* )&elems = new in ts.max;*(i nt* )&max = s.max; for(pos=0;poss.pos;pos+) elemspos= s.elemspos;return *this;void STACK:pri nt( ) con stfor(i nt i=0;ipos;i+) coutelemsivvn;STACK:STACK()delete elems;if(elems=0)cout销毁失败endl;elsecoutvv销毁成功endl;int mai n()STACK i(5),j(8); i1369;int k;ik;coutkvvn;i. pri nt();j=i;j.pri nt(); j123(int &e)volatile;出队列到 e,并返回队列virtual QUEUE & operator=(co nst QUEUE&s); /赋 s 给队列,并返回被赋值的队列virtual void prin t( ) con打印队列st;victual QUEUE();销毁队列);1.2需求分析本题目用数组实现队列,需要预知需要空间的大小,会造成空间浪费或不够用;插入或删除不需要动态分配或删除内存,耗时很小;支持随机存取。2. 系统设计定义一个类,分配一个数组空间来存储栈内元素信息,类中分别定义两个int 元素表示队列的头和尾,入栈的时候,头加一;出栈的时候,尾加一。3. 软件开发在Codeblocks编译环境下,使用C+语言编写4. 软件测试测试结果见图4.15. 特点与不足5.1技术特点通过创建队列类QUEUE完成了队列的构造析构等诸多功能;同时再次运用重 载操作符方便了入队出队等操作的完成。5.2不足和改进的建议队列一旦生成则无法改变。6. 过程和体会6.1遇到的主要问题和解决方法如何构建一个循环队列,解决方法利用求余的方法,当头结点大于最大元素的 时候,除以最大元素求余,重新的得到头结点。6.2课程设计的体会本次实验使用面向对象的方法来编写一个队列,让我对队列的构建以及对其进 行一些列的操作有了更进一步的了解。与前几次栈的实验相比,难度有所增加,但 更锻炼了个人能力。7. 源码和说明7.1文件清单及其功能说明experime nt4.cpp 源码experime nt4.exe 可执行文件。7.2用户使用说明书experiment4.cpp是程序的源码,可通过修改其中main函数中的变量来测试各 个函数。7.3源代码#in elude #in elude using n amespaee std;class QUEUE(int *eonst elems;申请内存用于存放队列的元素const int max; 队列能存放的最大元素个数int head, tail;队列头和尾,队列空时head=tail初始时head=tail=Opublie:QUEUE(int m);/初始化队列:最多m个元素QUEUE(eonst QUEUE&s);/用队列s拷贝初始化队列virtual operator int ( ) eon st;返回队列的实际元素个数virtual QUEUE& operator(int e);/将 e 入队列,并返回队列virtual QUEUE& operator(int &e); / 出队列到 e 并返回队列 virtual QUEUE& operator=(eonst QUEUE&s); /赋s给队列,并返回被赋值的 队列virtual void prin t( ) eon st;/ 打印队歹 Uvirtual QUEUE( );/ 销毁队列);QUEUE:QUEUE(i nt m):elems( new in tm),max(m),head(O),tail(O) QUEUE:QUEUE(eo nst QUEUE&s):elems( newin ts.max),max(s.max),head(s.head),tail(s.tail)for(i nt i=head;i=head)return (tail-head);retur n (max-head+tail);QUEUE & QUEUE:operator(i nt e)if(tail+1)%max=head)coutvv队列满 n;elseelemstail=e;tail+;return (*this);QUEUE & QUEUE:operator(i nt & e)(if(head=tail)(coutvv队列空 n;elsee=elemshead;head=(head+)%max;return(*this);QUEUE & QUEUE:operator=(co nst QUEUE&s)( delete elems;*(i nt* )&elems = new in ts.max;*(i nt* )&max = s.max;head = s.head;tail = s.tail;for(int i=head;itail;i+)elemsi=s.elemsi;cout赋值成功n;return *this;void QUEUE:print( ) const( if(head=tail)coutvEmptyn; cout队列元素为:;if(headvtail)for(int i=head;itail;i+) coutelemsivvt;elsefor(i nt i=head;imax+1;i+) coutelemsit;for(int i=0;itail;i+) coutelemsit; coutn;QUEUE:QUEUE( )delete elems;*(i nt* )&elems = 0;*(i nt*)&max =0;head = tail =0;int mai n()QUEUE q(5);q258;cout元素数目(int)qendl;QUEUE p(q);p.pri nt();int i;qi;cout出队元素iendl;q.pri nt();实验五.基于组合的整型队列编程1.需求分析1.1题目要求整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列是否 为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数米用面 向对象的C+语言定义,请将完成上述操作的所有函数米用C+程,然后写一个main函数对队列的所有操作函数进行测试。注意,请用实验三的 SATCK&合形成新的类QUEUE请说明如果删掉virtual有什么不同。class QUEUE(STACK s1, s2;public:QUEUE(int m);初始化队列:每个栈最多m个元素QUEUE(const QUEUE&s);virtual operator int ( ) con st;virtual QUEUE& operator(int e);virtual QUEUE& operator(int &e);用队列s拷贝初始化队列返回队列的实际元素个数/将e入队列,并返回队列/出队列到e,并返回队列virtual QUEUE& operator=(const QUEUE&s); / 赋 s 给队列,并返回被赋值的队列/打印队歹U/销毁队列virtual void prin t( ) con st;virtual QUEUE(););1.2需求分析采用面向对象的C+语言定义,构建整型队列并对其进行的操作通常包括判断mai n队列是否为空、向队列顶添加一个整型元素、出队列等,再写一个 函数对队列的所有操作函数进行测试。2. 系统设计用两个栈实现队列,先判栈S2是否为空,如果为空,对S1进行入栈操作,如 果不是空,栈S2数据元素倒入到S1,然后对S1进行入栈操作。出队列时。判断S2是否为空,如果非空S2中的元素出栈,若果为空,把S1的元素倒入到S2,对S2的元素进行出栈操作3. 软件开发在Codeblocks编译环境下,使用C+语言编写。4. 软件测试测试结果见图5.1C:U5ersdellDe5ktop C + +experimert5.exe X4364366Process returned 0 (0x0) execution time : CL 094 s Press any key to continue.图5.15.特点与不足5.1技术特点基本功能已完成,无其他特点。5.2不足和改进的建议代码可能有点繁琐,所以可以对代码进行一些精简操作。6. 过程和体会6.1遇到的主要问题和解决方法在栈与队列的转换问题上理解有误,后在同学的讲解下明白了问题及如何修改6.2课程设计的体会对队列的结构有了了解,同时也理解了栈与队列的联系。7. 源码和说明7.1文件清单及其功能说明experime nt5.cpp 源码experime nt5.exe 可执行文件。7.2用户使用说明书experiment5.cpp是程序的源码,可通过修改其中main函数中的变量来测试各 个函数。7.3源代码#in elude #in clude using n amespace std;class STACK(int *const elems;申请内存用于存放栈的元素const int max; 栈能存放的最大元素个数int pos;栈实际已有元素个数,栈空时pos=0;public:STACK(int m);初始化栈:最多m个元素STACK(const STACK&s);用栈s拷贝初始化栈virtual int size ( ) const;返回栈的最大元素个数 maxvirtual operator int () con st;返回栈的实际元素个数 posvirtual in t operator (i nt x) con st; 取下标 x 处的栈元素virtual STACK& operator(int e);将 e 入栈并返回栈virtual STACK& operator(int &e); /出栈到 e,并返回栈 virtual STACK& operator=(const STACK&s); /赋 s 给栈,并返回被赋值的栈 virtual void prin t() con st;/打印栈/销毁栈virtual STACK();;STACK:STACK(intm):elems(newintm),max(m),pos(0)(STACK:STACK(co nst STACK&s):elems( newin ts.max),max(s.max),pos(s.pos)for(i nt i=0;ipos;i+)elemsi=s.elemsi;int STACK:size ( ) con streturn max;STACK:operator int () con streturn pos;int STACK:operator (int x) con streturn elemsx; STACK &STACK:operator(i nt &e)if(pos0)coutvemptyn;return *this; e=elems-pos;return *this;STACK & STACK:operator=(co nst STACK&s)if(elems) delete elems;*(i nt* )&elems=new in ts.max;*(i nt *)&max=s.max;for(pos=0; poss.pos; pos+) elemspos=s.elemspos; return *this;void STACK:pri nt( ) con stfor(i nt i=0;ipos;i+)coutelemsit;STACK:STACK()delete elems;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!