版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、率申科按衣茅课程实验报课程名称:面向对象程序设计院 系:专业班级:学 号:姓 名:指导教师:文档目录实验一 面向过程的整型栈编程 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.
2、软件开发144. 软件测试145. 特点与不足145.1技术特点145.2不足和改进的建议 156. 过程和体会156.1遇到的主要问题和解决方法 156.2课程设计的体会 157源码和说明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
3、. 源码和说明217.1文件清单及其功能说明 217.2用户使用说明书217.3源代码21实验四.面向对象的整型队列编程 251. 需求分析251.1题目要求251.2需求分析252. 系统设计263. 软件开发264. 软件测试265. 特点与不足265.1技术特点265.2不足和改进的建议 266. 过程和体会266.1遇到的主要问题和解决方法 266.2课程设计的体会 277源码和说明277.1文件清单及其功能说明 277.2用户使用说明书 277.3源代码27实验五.基于组合的整型队列编程 311. 需求分析311.1题目要求 311.2需求分析312. 系统设计313. 软件开发32
4、4. 软件测试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.1技术特点 385.2不足和改进的建议 386. 过程和体会396.1遇到的主要问题和解决方法 396.2课程设计的体会 397源码和说明397.1文件清单及其功能说明
5、 397.2用户使用说明书 397.3源代码39实验一.面向过程的整型栈编程1需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否 为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面 向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编 程,然后写一个main函数对栈的所有操作函数进行测试。struct STACKint *elems; 申请存用于存放栈的元素int max;栈能存放的最大元素个数int pos;/栈实际已有元素个数,栈空时 pos=0;void initSTACK(STACK *const p, int m)
6、; 初始化 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
7、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概要
8、设计函数结构图见图1.1图1.1总体流程图见图1.2YY图1.22.2详细设计void 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 (const STACK *const p)入口参数:无出口参数:int max功能:返回p指的栈的最大元素个数maxint howMany (const STACK *const
9、 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(STA
10、CK*co nst p, con st STACK&s) 入口参数:STACK&s出口参数:(*this)功能:赋s给p指栈,返回pvoid prin t(co nst STACK*co nst p)入口参数:无出口参数:无功能:打印p指向的栈元素void destroySTACK(STACK*const p)入口参数:出口参数:功能:销毁p指向的栈,释放3软件开发在Codeblocks编译环境下,使用 C+语言编写4. 软件测试测试结果见图1.3图1.35特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的
11、数据;同时注释较少,对于程 序不了解的人可能需要花费更多时间去了解。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&
12、lt;stdio.h>#in clude<malloc.h>#in clude<stdlib.h>struct STACKint *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 *con
13、st p);返回p指向的栈的最大元素个数maxint howMany (const STACK *const p); 返回p指向的栈的实际元素个数 posint getelem (const STACK *const p, int x); 取下标 x 处的栈元素STACK *const push(STACK *const p, int e); 将 e入栈,并返回 pSTACK *const pop(STACK *const p, int &e); /出栈到 e,并返回 pSTACK *const assig n(STACK*co nst p, con st STACK&s);
14、赋 s 给 p 指的栈, 并返回pvoid prin t(co nst STACK*c on st p);打印 p 指向的栈void destroySTACK(STACK*const 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);in itSTACK(s2,*s1);p
15、rin 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
16、);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 = (i nt*)malloc(m*sizeof(i nt*);if(!p->elems)return;p->pos = 0;p->max = m;int i;for(i=0;i<(p->max);i+)p->elems
17、i = 0;void initSTACK(STACK *const 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;i<(s.pos);i+)p->elemsi=s.elemsi;prin tf("%dn",p->elemsi);int size (const STACK *const p)返回p指向的栈的最大元素个数 maxretu
18、rn p->max;posint howMany (const STACK *const p) 返回p指向的栈的实际元素个数retur n p->pos;int getelem (const STACK *const p, int x)取下标 x 处的栈元素if(p=NULL)return NULL;elseif(x>(p->pos)printf("不存在元素n");elsereturn p->elemsx;STACK *const push(STACK *const p, int e) /将 e入栈,并返回 pif(p=NULL)return
19、 NULL;elseif(p->pos)v=(p->max)p->elemsp->pos=e; p->pos+;return p;elseprintf("栈满 n");STACK *const pop(STACK *const p, int &e) / 出栈到 e,并返回 p if(p=NULL)return NULL;else if(p->pos)=0) printf("栈为空 n"); elsee=p->elems(p->pos)-1; (p->pos)-;return p;STACK *
20、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);in itSTACK(p,s);return p;void print(const STACK*const p)打印 p指向的栈int i;if(p = NULL)return;else if(p->pos = 0)printf(&qu
21、ot;栈为空 n");elsefor(i=0;i<(p->pos);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题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否 为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向
22、对象的C+语言定义,请将完成上述操作的所有函数米用 C+编程,然后写 个main函数对栈的所有操作函数进行测试。class STACKint *const elems; /申请存用于存放栈的元素 con st int max; 栈能存放的最大元素个数int pos;/栈实际已有元素个数,栈空时 pos=0;public:STACK(int m);/初始化栈:最多 m个元素STACK(const STACK&s); /用栈s拷贝初始化栈int size ( ) con st;返回栈的最大元素个数 maxint howMa ny ( ) con st; 返回栈的实际元素个数 pos int
23、 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();销毁栈;1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是 否为空、向栈顶添加一个整型元素、出栈等。2系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中 给定一个
24、栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(i nt m)功能:初始化栈:最多 m个元素返回值:无STACK(co nst STACK&s)功能:用栈s拷贝初始化栈返回值:无int size ( ) const功能:返回栈的最大元素个数 max返回值:最大元素个数maxint howMany ( ) const功能:返回栈的实际元素个数 pos返回值:元素数目posint getelem (int x) const功能:取下标x处的栈元素返回值:下标为x的元素STACK & push(i nt e)功能:将e入栈返回值:栈的引用STACK & pop
25、(i nt &e)功能:出栈到e并返回栈返回值:栈的引用STACK & assig n(co nst STACK&s)功能:使用栈s给栈p赋值 返回值:栈的引用void prin t( ) const功能:打印栈 返回值:无STACK()功能:销毁栈返回值:无3软件开发在Codeblocks编译环境下,使用 C+语言编写4.软件测试测试结果见图2.1图2.15特点与不足5.1技术特点完成了初定目标,无其他特点5.2不足和改进的建议人机交互需要进一步完善6. 过程和体会6.1遇到的主要问题和解决方法由于第一次使用C+面向对象编写程序,开始不明白对象的生成及使用。 在和同学
26、老师的沟通和交流中,慢慢学会了编程的方法。6.2课程设计的体会C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互 相借鉴,这样就减少了在理解上的难度。7. 源码和说明7.1文件清单及其功能说明experime nt2.cpp 源码experime nt2.exe 可 执行文件。7.2用户使用说明书experiment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试 各个函数。7.3源代码#in elude <iostream>#in clude <stri ng>using n amespace std;class STACKint *co
27、nst elems; /申请存用于存放栈的元素con st int max;栈能存放的最大元素个数int pos;/栈实际已有元素个数,栈空时 pos=0;public:STACK(int m);/初始化栈:最多 m个元素STACK(const STACK&s); /用栈s拷贝初始化栈 int size ( ) con st; 返回栈的最大元素个数 max int howMa ny ( ) con st; 返回栈的实际元素个数 pos int getelem (int x) con st;取下标x处的栈元素STACK& push(int e);/将e入栈,并返回栈STACK&a
28、mp; pop(int &e);/出栈到e并返回栈STACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈 void print( ) con st;/ 打印栈STACK( );/ 销毁栈;STACK:STACK(int m):elems(new intm),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;i<pos;i+)elemsi=s.getelem(i)
29、;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 cout«"fulln"return *this;STACK & STACK:pop( int & e)if(
30、pos=0)cout<v"empty 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;i<s.howMa ny ();i+) elemsi = s.getelem(i); return *thi
31、s;void STACK:pri nt( ) con stint i;coutvv"栈的元素为:"for(i=0;i<pos;i+)cout<<elemsi<<" "cout«e 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);
32、cout«"出栈元素"vvivvendl;STACK p(s);cout«"容量"vvp.size()v<e ndl;cout«"当前元素数目"vvp.howMany();实验三.基于算符重载的整型栈编程1需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否 为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向 对象的C+语言定义,请将完成上述操作的所有函数米用C+编程,然后写一个main函数对栈的所有操作函数进行测试。class STACKint
33、*const elems; /申请存用于存放栈的元素con st 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; 返回栈的实际元素个数 pos virtual in t operator (i nt x) con st;/ 取下标 x 处的栈元素 virtual STA
34、CK& 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();销毁栈;1.2需求分析采用面向对象的C+语言定义,构建整型栈并对其进行判断栈是否为空、 向栈顶添加一个整型元素、出栈等操作。2系统设计2.1概要设计首先需要定义一个类来实现栈,
35、然后依次实现栈的各个功能,在主函数中 给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计初始化定义一个类,分配一个数组空间来存储栈元素信息, 然后初始化为0;实现入栈则需要将入栈元素e放入栈,采用了先判断栈的最大容量够不 够的问题,如果不够重新分配空间,并且让 e入栈,将当前元素pos加一; 然后返回栈结构。实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素 赋给一个变量然后将当前元素 pos减一;返回栈结构。实现栈的赋给即需要将si栈的元素依次赋给s2栈的,当前元素也需一致 并且返回新的栈结构。3软件开发在Codeblocks编译环境下,使用 C+语言编写。4.软件
36、测试测试结果见图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函数中的变量来
37、测试 各个函数。7.3源代码#in elude <iostream>#in clude <stri ng>using n amespace std;class STACKint *const elems; /申请存用于存放栈的元素con st int max;栈能存放的最大元素个数int pos;/栈实际已有元素个数,栈空时 pos=0;public:STACK(int m);/初始化栈:最多 m个元素STACK(const STACK&s);/用栈s拷贝初始化栈virtual int size ( ) con st;返回栈的最大元素个数 maxvirtual
38、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;/ 打印栈vir
39、tual STACK( );/ 销毁栈;STACK:STACK(int m):elems(new intm),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;i<pos;i+)elemsi=s.elemsi;int STACK:size ( ) con streturn max;STACK:operator int () con streturn pos;int STACK:operator (int x) con streturn e
40、lemsx;STACK & STACK:operator<<(i nt e)if(pos>max)coutvv"栈满"else*(elems+pos)=e;pos+;return (*this);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
41、;*(i nt*)&elems = new in ts.max;*(i nt*)&max = s.max; for(pos=0;pos<s.pos;pos+) elemspos = s.elemspos;return *this;void STACK:pri nt( ) con stfor(i nt i=0;i<pos;i+) cout<<elemsivv"n"STACK:STACK()delete elems;if(elems=0)cout«"销毁失败"<<endl;else coutvv&
42、quot;销毁成功"<<endl;int mai n()STACK i(5),j(8); i<<1<<3<<6<<9;int k;i»k; cout<<kvv"n"i. pri nt();j=i;j.pri nt(); j<<1<<2<<3<<4; cout«e ndl«(i nt)j;实验四.面向对象的整型队列编程1需求分析1.1题目要求整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列 是否为空、向
43、队列顶添加一个整型元素、出队列等。整型队列类型及其操作函 数米用面向对象的C+语言定义,请将完成上述操作的所有函数米用 C+编程, 然后写一个main函数对队列的所有操作函数进行测试。class QUEUEint *const elems; /申请存用于存放队列的元素con st int max;/队列能存放的最大元素个数int head, tail;/队列头和尾,队列空时 head=tail初始时head=tail=Opublic:QUEUE(int m);/初始化队列:最多 m个元素QUEUE(const QUEUE&s);用队列s拷贝初始化队列virtual operator i
44、nt ( ) con st; 返回队列的实际元素个数virtual QUEUE& operator«(int e)volatile;将 e入队列,并返回队列virtual QUEUE& operator»(int &e)volatile; /出队列到 e并返回队列 virtual QUEUE& operator=(const QUEUE&s); / 赋 s给队列,并返回被赋 值的队列virtual void prin t( ) con st;打印队歹 Uvirtual QUEUE();销毁队列;1.2需求分析本题目用数组实现队列,需要
45、预知需要空间的大小,会造成空间浪费或不够用;插入或删除不需要动态分配或删除存,耗时很小;支持随机存取。2系统设计定义一个类,分配一个数组空间来存储栈元素信息,类中分别定义两个int元素表示队列的头和尾,入栈的时候,头加一;出栈的时候,尾加一。3软件开发在Codeblocks编译环境下,使用 C+语言编写4.软件测试测试结果见图4.1图4.15. 特点与不足5.1技术特点通过创建队列类QUEUE,完成了队列的构造析构等诸多功能;同时再次 运用重载操作符方便了入队出队等操作的完成。5.2不足和改进的建议队列一旦生成则无法改变。6. 过程和体会6.1遇到的主要问题和解决方法如何构建一个循环队列,解决
46、方法利用求余的方法,当头结点大于最大元 素的时候,除以最大元素求余,重新的得到头结点。6.2课程设计的体会本次实验使用面向对象的方法来编写一个队列,让我对队列的构建以及对 其进行一些列的操作有了更进一步的了解。与前几次栈的实验相比,难度有所 增加,但更锻炼了个人能力。7. 源码和说明7.1文件清单及其功能说明experime nt4.cpp 源码experime nt4.exe 可 执行文件。7.2用户使用说明书experiment4.cpp是程序的源码,可通过修改其中main函数中的变量来测试 各个函数。7.3源代码#in elude <iostream>#in clude &l
47、t;stri ng>using n amespace std;class QUEUEint *const elems; /申请存用于存放队列的元素con st int max;/队列能存放的最大元素个数int head, tail;/队列头和尾,队列空时 head=tail初始时head=tail=Opublic:QUEUE(int m);/初始化队列:最多 m个元素QUEUE(const QUEUE&s);/用队列s拷贝初始化队列virtual operator int ( ) con st;返回队列的实际元素个数virtual QUEUE& operator«
48、;(int e);/将 e入队列,并返回队列virtual QUEUE& operator»(int &e); / 出队列到 e并返回队列 virtual QUEUE& operator=(const QUEUE&s); / 赋 s给队列,并返回被赋值的 队列virtual void prin t( ) con st;/ 打印队歹 Uvirtual QUEUE( );/ 销毁队列;QUEUE:QUEUE(int m):elems(new intm),max(m),head(O),tail(O) QUEUE:QUEUE(co nst QUEUE&
49、s):elems( newin ts.max),max(s.max),head(s.head),tail(s.tail)for(int i=head;i<tail;i+)elemsi=s.elemsi;QUEUE:operator int () con stif(tail>=head)return (tail-head);return (max-head+tail);QUEUE & QUEUE:operator«(i nt e)if(tail+1)%max=head)coutvv"队列满 n"elseelemstail=e;tail+;retu
50、rn (*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=h
51、ead;i<tail;i+)elemsi=s.elemsi;cout«"赋值成功n"return *this;void QUEUE:print( ) constif(head=tail)cout<v"Emptyn"cout«"队列元素为:"if(headvtail)for(int i=head;i<tail;i+) cout<<elemsi<<"t"elsefor(int i=head;i<max+1;i+) cout<<elemsi&
52、lt;<"t"for(i nt i=0;i<tail;i+)cout<<elemsi<<"t"cout<<"n"QUEUE:QUEUE( )delete elems;*(i nt*)&elems = 0;*(i nt*)&max =0;head = tail =0;int mai n()QUEUE q(5);q<<2<<5<<8;cout«"元素数目"<<(int)q«endl;QUE
53、UE p(q);p.pri nt();int i;q»i;cout«"出队元素"<<i<<endl;q.pri nt();实验五.基于组合的整型队列编程1需求分析1.1题目要求整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列 是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函 数米用面向对象的C+语言定义,请将完成上述操作的所有函数米用 C+编程, 然后写一个main函数对队列的所有操作函数进行测试。注意,请用实验三的 SATCK组合形成新的类QUEUE。请说明如果删掉virtual有什么不同。c
54、lass QUEUESTACK s1, s2;public:QUEUE(i nt m);/初始化队列:每个栈最多 m个元素QUEUE(const QUEUE&s);用队列s拷贝初始化队列virtual operator int ( ) con st; 返回队列的实际元素个数virtual QUEUE& operator«(int e);将 e入队列,并返回队列virtual QUEUE& operator»(int &e); 出队列到 e并返回队列virtual QUEUE& operator=(const QUEUE&s);
55、 / 赋 s给队列,并返回被赋 值的队列virtual void prin t( ) con st;打印队歹 Uvirtual QUEUE();销毁队列;1.2需求分析采用面向对象的C+语言定义,构建整型队列并对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等,再写一个ma in函数对队列的所有操作函数进行测试。2系统设计用两个栈实现队列,先判栈 S2是否为空,如果为空,对S1进行入栈操作,如果不是空,栈S2数据元素倒入到S1,然后对S1进行入栈操作出队列时。判断S2是否为空,如果非空S2中的元素出栈,若果为空,把S1的元素倒入到S2,对S2的元素进行出栈操作3软件开发
56、在Codeblocks编译环境下,使用 C+语言编写。4.软件测试测试结果见图5.1图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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《二手车鉴定》-2-4 仪器检测(一)
- 钢结构安全防护计划
- 老年人营养支持与肠内营养
- 糖尿病App中的糖尿病足预防与护理
- 销售试用期转正工作总结11篇
- 过年写给员工的感谢信
- 2026年人防办安全风险防控措施方案
- 2026年新基础教育教学目标
- 光明区2025年4月广东深圳光明区政务服务数据管理局招聘一般类岗位专干2人笔试历年参考题库典型考点附带答案详解
- 会同县2025湖南怀化会同县事业单位招聘6人笔试历年参考题库典型考点附带答案详解
- 2026年湖北武汉警务辅助人员招聘考试试卷-含答案解析
- 2026工会社会化工作者综合能力测试题库及答案
- 2026届重庆市八中中考语文模试卷含解析
- 中华财险四川分公司招聘笔试题库2026
- 2026年物业管理机器人应用创新报告
- 2026年高二数学寒假自学课(沪教版)专题02 数列难点总结(原卷版)
- 民宿入住须知与安全告知指导手册
- 电梯安全知识课件教学
- 2024年长春金融高等专科学校辅导员考试笔试真题汇编附答案
- 2026年国企内部审计笔试题目及详细解析
- 2025年工厂三级安全教育培训考核试卷(含答案)
评论
0/150
提交评论