面向对象程序设计课程实验报告材料3150.pdf
实用标准文档 文案大全 课 程 实 验 报 告 课程名称:面向对象程序设计 院 系:专业班级:学 号:姓 名:指导教师:实用标准文档 文案大全 实用标准文档 文案大全 目 录 实验一.面向过程的整型栈编程.1 1.需求分析.1 1.1 题目要求.1 1.2 需求分析.2 2.系统设计.2 2.1 概要设计.2 2.2 详细设计.3 4.软件测试.4 5.特点与不足.5 5.1 技术特点.5 5.2 不足和改进的建议.5 6.过程和体会.5 6.1 遇到的主要问题和解决方法.5 6.2 课程设计的体会.5 7.源码和说明.6 7.1 文件清单及其功能说明.6 7.2 用户使用说明书.6 7.3 源代码.6 实验二.面向对象的整型栈编程.12 1.需求分析.12 1.1 题目要求.12 1.2 需求分析.12 2.系统设计.13 2.1 概要设计.13 2.2 详细设计.13 3.软件开发.14 4.软件测试.14 5.特点与不足.14 5.1 技术特点.14 5.2 不足和改进的建议.15 6.过程和体会.15 6.1 遇到的主要问题和解决方法.15 6.2 课程设计的体会.15 实用标准文档 文案大全 7.源码和说明.15 7.1 文件清单及其功能说明.15 7.2 用户使用说明书.15 7.3 源代码.15 实验三.基于算符重载的整型栈编程.19 1.需求分析.19 1.1 题目要求.19 1.2 需求分析.19 2.系统设计.20 2.1 概要设计.20 2.2 详细设计.20 3.软件开发.20 4.软件测试.20 5.特点与不足.21 5.1 技术特点.21 5.2 不足和改进的建议.21 6.过程和体会.21 6.1 遇到的主要问题和解决方法.21 6.2 课程设计的体会.21 7.源码和说明.21 7.1 文件清单及其功能说明.21 7.2 用户使用说明书.21 7.3 源代码.21 实验四.面向对象的整型队列编程.25 1.需求分析.25 1.1 题目要求.25 1.2 需求分析.25 2.系统设计.26 3.软件开发.26 4.软件测试.26 5.特点与不足.26 5.1 技术特点.26 5.2 不足和改进的建议.26 6.过程和体会.26 6.1 遇到的主要问题和解决方法.26 实用标准文档 文案大全 6.2 课程设计的体会.27 7.源码和说明.27 7.1 文件清单及其功能说明.27 7.2 用户使用说明书.27 7.3 源代码.27 实验五.基于组合的整型队列编程.31 1.需求分析.31 1.1 题目要求.31 1.2 需求分析.31 2.系统设计.31 3.软件开发.32 4.软件测试.32 5.特点与不足.32 5.1 技术特点.32 5.2 不足和改进的建议.32 6.过程和体会.32 6.1 遇到的主要问题和解决方法.32 6.2 课程设计的体会.32 7.源码和说明.33 7.1 文件清单及其功能说明.33 7.2 用户使用说明书.33 7.3 源代码.33 实验六.基于继承的整型队列编程.37 1.需求分析.37 1.1 题目要求.37 1.2 需求分析.38 2.系统设计.38 3.软件开发.38 4.软件测试.38 5.特点与不足.38 5.1 技术特点.38 5.2 不足和改进的建议.38 6.过程和体会.39 6.1 遇到的主要问题和解决方法.39 6.2 课程设计的体会.39 实用标准文档 文案大全 7.源码和说明.39 7.1 文件清单及其功能说明.39 7.2 用户使用说明书.39 7.3 源代码.39 实用标准文档 文案大全 实验一.面向过程的整型栈编程 1.需求分析 1.1 题目要求 整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯 C 语言定义,请将完成上述操作的所有函数采用面向过程的方法编程,然后写一个 main 函数对栈的所有操作函数进行测试。struct STACK int *elems;/申请内存用于存放栈的元素 int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时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 指的栈的最大元素个数max int 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,并返回 p STACK*const assign(STACK*const p,const STACK&s);/赋给 p 指栈,返回 p void print(const STACK*const p);/打印 p 指向的栈元素 void destroySTACK(STACK*const p);/销毁 p 指向的栈,释放 实用标准文档 文案大全 1.2 需求分析 本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2.系统设计 2.1 概要设计 函数结构图见图 1.1 栈初始化栈返回max,pos取栈内元素入栈、出栈打印栈销毁栈图 1.1 总体流程图见图 1.2 实用标准文档 文案大全 开始初始化是否继续入栈是否继续出栈销毁栈结束YNYN 图 1.2 2.2 详细设计 void initSTACK(STACK*const p,int m)入口参数:int m 出口参数:无 功能:初始化栈,可存 m 个元素 void initSTACK(STACK*const p,const STACK&s)入口参数:const STACK&s 出口参数:无 功能:用 s 初始化 p 指空栈 int size(const STACK*const p)入口参数:无 出口参数:int max 功能:返回 p 指的栈的最大元素个数 max int howMany(const STACK*const p)入口参数:无 出口参数:int pos 功能:返回 p 指的栈的实际元素个数 pos 实用标准文档 文案大全 int getelem(const STACK*const p,int x)入口参数:int x 出口参数:elemm 功能:取下标 x 处的栈元素 STACK*const push(STACK*const p,int e)入口参数:int e 出口参数:(*this)功能:将 e 入栈,并返回 p STACK*const pop(STACK*const p,int&e)入口参数:int&e 出口参数:(*this)功能:出栈到 e,并返回 p STACK*const assign(STACK*const p,const STACK&s)入口参数:STACK&s 出口参数:(*this)功能:赋 s 给 p 指栈,返回 p void print(const STACK*const p)入口参数:无 出口参数:无 功能:打印 p 指向的栈元素 void destroySTACK(STACK*const p)入口参数:出口参数:功能:销毁 p 指向的栈,释放 3.软件开发 在 Codeblocks 编译环境下,使用 C+语言编写。4.软件测试 测试结果见图 1.3 实用标准文档 文案大全 图 1.3 5.特点与不足 5.1 技术特点 完成了实验的所有要求,没有错误的地方。5.2 不足和改进的建议 没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。6.过程和体会 6.1 遇到的主要问题和解决方法 输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2 课程设计的体会 本次实验主要还是通过回顾C 语言中栈的知识完成在 C+上的编程,所以实用标准文档 文案大全 总体过程没有出现太大的问题;同时也对 const 变量有了进一步的认识。7.源码和说明 7.1 文件清单及其功能说明 experiment1.cpp 源码 experiment1.exe 可执行文件。7.2 用户使用说明书 experiment1.cpp是程序的源码,可通过修改其中 main 函数中的变量来测试各个函数。7.3 源代码#include#include#include struct STACK int *elems;/申请内存用于存放栈的元素 int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时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 指向的栈的最大元素个数 max int 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,并返回 p 实用标准文档 文案大全 STACK*const assign(STACK*const p,const STACK&s);/赋 s 给 p 指的栈,并返回 p void print(const STACK*const p);/打印 p 指向的栈 void destroySTACK(STACK*const 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);print(s2);printf(栈 s1:n);print(s1);/assign(s2,*s1);printf(栈 s2:n);print(s2);int a,b,c;a=size(s1);printf(栈的最大元素个数是%dn,a);b=howMany(s1);printf(栈的实际元素个数是%dn,b);c=getelem(s1,3);printf(3 处栈元素是是%dn,c);int x,y,z;pop(s2,x);pop(pop(s2,y),z);printf(x=%d,y=%d,z=%d n,x,y,z);destroySTACK(s2);destroySTACK(s1);实用标准文档 文案大全 getchar();return 0;void initSTACK(STACK*const p,int m)/初始化 p 指向的栈:最多 m个元素 p-elems=(int*)malloc(m*sizeof(int*);if(!p-elems)return;p-pos=0;p-max=m;int i;for(i=0;imax);i+)p-elemsi=0;void initSTACK(STACK*const p,const STACK&s)/用栈 s 初始化 p 指向的栈 p-elems=(int*)malloc(s.max)*sizeof(int);p-pos=s.pos;p-max=s.max;int i;for(i=0;ielemsi=s.elemsi;printf(%dn,p-elemsi);int size(const STACK*const p)/返回 p 指向的栈的最大元素个数 max return p-max;实用标准文档 文案大全 int howMany(const STACK*const p)/返回 p 指向的栈的实际元素个数 pos return p-pos;int getelem(const STACK*const p,int x)/取下标 x 处的栈元素 if(p=NULL)return NULL;else if(x(p-pos)printf(不存在元素n);else return p-elemsx;STACK*const push(STACK*const p,int e)/将 e 入栈,并返回 p if(p=NULL)return NULL;else if(p-pos)max)p-elemsp-pos=e;p-pos+;return p;实用标准文档 文案大全 else printf(栈满n);STACK*const pop(STACK*const p,int&e)/出栈到 e,并返回 p if(p=NULL)return NULL;else if(p-pos)=0)printf(栈为空n);else e=p-elems(p-pos)-1;(p-pos)-;return p;STACK*const assign(STACK*const p,const STACK&s)/赋 s 给 p 指的栈,并返回 p if(p=NULL|&s=NULL)return NULL;else free(p-elems);/free(p);/STACK*p=(STACK*)malloc(sizeof(STACK);实用标准文档 文案大全 initSTACK(p,s);return p;void print(const STACK*const p)/打印 p 指向的栈 int i;if(p=NULL)return;else if(p-pos=0)printf(栈为空n);else for(i=0;ipos);i+)printf(%d,p-elemsi);printf(n);void destroySTACK(STACK*const p)/销毁 p 指向的栈 free(p-elems);free(p);printf(栈已销毁n);实用标准文档 文案大全 实验二.面向对象的整型栈编程 1.需求分析 1.1 题目要求 整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的 C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个 main 函数对栈的所有操作函数进行测试。class STACK int *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多 m 个元素 STACK(const STACK&s);/用栈 s 拷贝初始化栈 int size()const;/返回栈的最大元素个数 max int howMany()const;/返回栈的实际元素个数 pos int getelem(int x)const;/取下标 x 处的栈元素 STACK&push(int e);/将 e 入栈,并返回栈 STACK&pop(int&e);/出栈到 e,并返回栈 STACK&assign(const STACK&s);/赋 s 给栈,并返回被赋值的栈 void print()const;/打印栈 STACK();/销毁栈;1.2 需求分析 采用面向对象的 C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。实用标准文档 文案大全 2.系统设计 2.1 概要设计 首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2 详细设计 STACK(int m)功能:初始化栈:最多 m 个元素 返回值:无 STACK(const STACK&s)功能:用栈 s 拷贝初始化栈 返回值:无 int size()const 功能:返回栈的最大元素个数max 返回值:最大元素个数 max int howMany()const 功能:返回栈的实际元素个数pos 返回值:元素数目 pos int getelem(int x)const 功能:取下标 x 处的栈元素 返回值:下标为 x 的元素 STACK&push(int e)功能:将 e 入栈 返回值:栈的引用 STACK&pop(int&e)功能:出栈到 e,并返回栈 返回值:栈的引用 实用标准文档 文案大全 STACK&assign(const STACK&s)功能:使用栈 s 给栈 p 赋值 返回值:栈的引用 void print()const 功能:打印栈 返回值:无 STACK()功能:销毁栈 返回值:无 3.软件开发 在 Codeblocks 编译环境下,使用 C+语言编写。4.软件测试 测试结果见图 2.1 图 2.1 5.特点与不足 5.1 技术特点 完成了初定目标,无其他特点。实用标准文档 文案大全 5.2 不足和改进的建议 人机交互需要进一步完善。6.过程和体会 6.1 遇到的主要问题和解决方法 由于第一次使用 c+面向对象编写程序,开始不明白对象的生成及使用。在和同学老师的沟通和交流中,慢慢学会了编程的方法。6.2 课程设计的体会 C+语言与 C 语言有很多相通的地方,所以其中的某些原理和方法可以互相借鉴,这样就减少了在理解上的难度。7.源码和说明 7.1 文件清单及其功能说明 experiment2.cpp 源码 experiment2.exe 可执行文件。7.2 用户使用说明书 experiment2.cpp是程序的源码,可通过修改其中 main 函数中的变量来测试各个函数。7.3 源代码#include#include using namespace std;class STACK int *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多 m 个元素 实用标准文档 文案大全 STACK(const STACK&s);/用栈 s 拷贝初始化栈 int size()const;/返回栈的最大元素个数 max int howMany()const;/返回栈的实际元素个数 pos int getelem(int x)const;/取下标 x 处的栈元素 STACK&push(int e);/将 e 入栈,并返回栈 STACK&pop(int&e);/出栈到 e,并返回栈 STACK&assign(const STACK&s);/赋 s 给栈,并返回被赋值的栈 void print()const;/打印栈 STACK();/销毁栈;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.size(),max(s.size(),pos(s.howMany()for(int i=0;ipos;i+)elemsi=s.getelem(i);cout复制构造成功endl;int STACK:size()const return max;int STACK:howMany()const return pos;int STACK:getelem(int x)const return elemsx;STACK&STACK:push(int e)if(posmax)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:assign(const STACK&s)int i;delete elems;/elems=new int s.size();/max=s.size();pos=s.howMany();for(i=0;is.howMany();i+)elemsi=s.getelem(i);return*this;void STACK:print()const int i;cout栈的元素为:;for(i=0;ipos;i+)coutelemsi ;coutendl;STACK:STACK()delete elems;/elems=0;实用标准文档 文案大全 /max=0;pos=0;cout析构完成;int main()STACK s(7);s.push(5);s.push(7);s.push(9);s.push(11);s.print();int i;s.pop(i);cout出栈元素iendl;STACK p(s);cout容量p.size()endl;cout当前元素数目p.howMany();实用标准文档 文案大全 实验三.基于算符重载的整型栈编程 1.需求分析 1.1 题目要求 整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的 C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个 main 函数对栈的所有操作函数进行测试。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;/返回栈的最大元素个数 max virtual operator int()const;/返回栈的实际元素个数 pos virtual int operator (int x)const;/取下标 x 处的栈元素 virtual STACK&operator(int&e);/出栈到 e,并返回栈 virtual STACK&operator=(const STACK&s);/赋 s 给栈,并返回被赋值的栈 virtual void print()const;/打印栈 virtual STACK();/销毁栈;1.2 需求分析 采用面向对象的 C+语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个整型元素、出栈等操作。实用标准文档 文案大全 2.系统设计 2.1 概要设计 首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2 详细设计 初始化定义一个类,分配一个数组空间来存储栈内元素信息,然后初始化为 0;实现入栈则需要将入栈元素 e 放入栈内,采用了先判断栈的最大容量够不够的问题,如果不够重新分配空间,并且让 e 入栈,将当前元素 pos 加一;然后返回栈结构。实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素赋给一个变量然后将当前元素 pos 减一;返回栈结构。实现栈的赋给即需要将 s1 栈内的元素依次赋给 s2 栈的,当前元素也需一致并且返回新的栈结构。3.软件开发 在 Codeblocks 编译环境下,使用 C+语言编写。4.软件测试 测试结果见图 3.1 图 3.1 实用标准文档 文案大全 5.特点与不足 5.1 技术特点 使用了符号重载,在一定程度上简化了函数。5.2 不足和改进的建议 在使用符号重载时需要特别注意,防止与其他操作符混淆。6.过程和体会 6.1 遇到的主要问题和解决方法 对于符号重载,刚开始不会调用函数,之后通过查阅书籍,明白了重载的含义。6.2 课程设计的体会 本次实验以实验二为基础,通过使用符号重载来更简单的实现实验目的。7.源码和说明 7.1 文件清单及其功能说明 experiment3.cpp 源码 experiment3.exe 可执行文件。7.2 用户使用说明书 experiment3.cpp是程序的源码,可通过修改其中 main 函数中的变量来测试各个函数。7.3 源代码#include#include using namespace 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;/返回栈的最大元素个数 max virtual operator int()const;/返回栈的实际元素个数pos virtual int operator (int x)const;/取下标 x 处的栈元素 virtual STACK&operator(int&e);/出栈到 e,并返回栈 virtual STACK&operator=(const STACK&s);/赋 s 给栈,并返回被赋值的栈 virtual void print()const;/打印栈 virtual STACK();/销毁栈;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.max),max(s.max),pos(s.pos)for(int i=0;ipos;i+)elemsi=s.elemsi;int STACK:size()constreturn max;STACK:operator int()constreturn pos;int STACK:operator (int x)constreturn elemsx;STACK&STACK:operatormax)cout(int&e)if(pos=0)cout栈空;else e=*(elems+pos-1);pos-;return(*this);STACK&STACK:operator=(const STACK&s)delete elems;*(int*)&elems=new ints.max;*(int*)&max=s.max;for(pos=0;poss.pos;pos+)elemspos=s.elemspos;return*this;void STACK:print()const for(int i=0;ipos;i+)coutelemsin;STACK:STACK()delete elems;if(elems=0)实用标准文档 文案大全 cout销毁失败endl;else cout销毁成功endl;int main()STACK i(5),j(8);i136k;coutkn;i.print();j=i;j.print();j1234;coutendl(int)j;实用标准文档 文案大全 实验四.面向对象的整型队列编程 1.需求分析 1.1 题目要求 整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的 C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个 main 函数对队列的所有操作函数进行测试。class QUEUE int *const elems;/申请内存用于存放队列的元素 const int max;/队列能存放的最大元素个数 int head,tail;/队列头和尾,队列空时 head=tail;初始时 head=tail=0 public:QUEUE(int m);/初始化队列:最多 m 个元素 QUEUE(const QUEUE&s);/用队列 s 拷贝初始化队列 virtual operator int()const;/返回队列的实际元素个数 virtual QUEUE&operator(int&e)volatile;/出队列到 e,并返回队列 virtual QUEUE&operator=(const QUEUE&s);/赋 s 给队列,并返回被赋值的队列 virtual void print()const;/打印队列 virtual QUEUE();/销毁队列;1.2 需求分析 本题目用数组实现队列,需要预知需要空间的大小,会造成空间浪费或不够用;插入或删除不需要动态分配或删除内存,耗时很小;支持随机存取。实用标准文档 文案大全 2.系统设计 定义一个类,分配一个数组空间来存储栈内元素信息,类中分别定义两个int 元素表示队列的头和尾,入栈的时候,头加一;出栈的时候,尾加一。3.软件开发 在 Codeblocks 编译环境下,使用 C+语言编写。4.软件测试 测试结果见图 4.1 图 4.1 5.特点与不足 5.1 技术特点 通过创建队列类 QUEUE,完成了队列的构造析构等诸多功能;同时再次运用重载操作符方便了入队出队等操作的完成。5.2 不足和改进的建议 队列一旦生成则无法改变。6.过程和体会 6.1 遇到的主要问题和解决方法 如何构建一个循环队列,解决方法利用求余的方法,当头结点大于最大元素的时候,除以最大元素求余,重新的得到头结点。实用标准文档 文案大全 6.2 课程设计的体会 本次实验使用面向对象的方法来编写一个队列,让我对队列的构建以及对其进行一些列的操作有了更进一步的了解。与前几次栈的实验相比,难度有所增加,但更锻炼了个人能力。7.源码和说明 7.1 文件清单及其功能说明 experiment4.cpp 源码 experiment4.exe 可执行文件。7.2 用户使用说明书 experiment4.cpp是程序的源码,可通过修改其中 main 函数中的变量来测试各个函数。7.3 源代码#include#include using namespace std;class QUEUE int *const elems;/申请内存用于存放队列的元素 const int max;/队列能存放的最大元素个数 int head,tail;/队列头和尾,队列空时 head=tail;初始时 head=tail=0 public:QUEUE(int m);/初始化队列:最多 m 个元素 QUEUE(const QUEUE&s);/用队列 s 拷贝初始化队列 virtual operator int()const;/返回队列的实际元素个数 virtual QUEUE&operator(int&e);/出队列到 e,并返回队列 virtual QUEUE&operator=(const QUEUE&s);/赋 s 给队列,并返回被赋值的队列 virtual void print()const;/打印队列 实用标准文档 文案大全 virtual QUEUE();/销毁队列;QUEUE:QUEUE(int m):elems(new intm),max(m),head(0),tail(0)QUEUE:QUEUE(const QUEUE&s):elems(new ints.max),max(s.max),head(s.head),tail(s.tail)for(int i=head;i=head)return(tail-head);return(max-head+tail);QUEUE&QUEUE:operator(int e)if(tail+1)%max=head)cout(int&e)if(head=tail)cout队列空n;else e=elemshead;head=(head+)%max;return(*this);实用标准文档 文案大全 QUEUE&QUEUE:operator=(const QUEUE&s)delete elems;*(int*)&elems=new ints.max;*(int*)&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)coutEmptyn;cout队列元素为:;if(headtail)for(int i=head;itail;i+)coutelemsit;else for(int i=head;imax+1;i+)coutelemsit;for(int i=0;itail;i+)coutelemsit;coutn;QUEUE:QUEUE()delete elems;*(int*)&elems=0;*(int*)&max =0;head=tail =0;实用标准文档 文案大全 int main()QUEUE q(5);q258;cout元素数目(int)qi;cout出队元素iendl;q.print();实用标准文档 文案大全 实验五.基于组合的整型队列编程 1.需求分析 1.1 题目要求 整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的 C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个 main 函数对队列的所有操作函数进行测试。注意,请用实验三的SATCK 组合形成新的类 QUEUE。请说明如果删掉 virtual 有什么不同。class QUEUE STACK s1,s2;public:QUEUE(int m);/初始化队列:每个栈最多 m 个元素 QUEUE(const QUEUE&s);/用队列 s 拷贝初始化队列 virtual operator int()const;/返回队列的实际元素个数 virtual QUEUE&operator(int&e);/出队列到 e,并返回队列 virtual QUEUE&operator=(const QUEUE&s);/赋 s 给队列,并返回被赋值的队列 virtual void print()const;/打印队列 virtual QUEUE();/销毁队列;1.2 需求分析 采用面向对象的 C+语言定义,构建整型队列并对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等,再写一个 main 函数对队列的所有操作函数进行测试。2.系统设计 用两个栈实现队列,先判栈 S2 是否为空,如果为空,对 S1 进行入栈操作,如果不是空,栈 S2 数据元素倒入到 S1,然后对 S1 进行入栈操作。实用标准文档 文案大全 出队列时。判断 S2 是否为空,如果非空 S2 中的元素