1、华中科技大学计算机学院C+实验报告 实验二课 程 实 验 报 告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院 系 : 计算机科学与技术 专业班级 : CS1209班 学 号 : 姓 名 : * * * 2014 年 1 月 22 日一、需求分析1.题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems; /申请内存用于存放栈的元素
2、 const int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0;public:STACK(int m); /初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈int size ( ) const; /返回栈的最大元素个数maxint howMany ( ) const; /返回栈的实际元素个数posint getelem (int x) const; /取下标x处的栈元素STACK& push(int e); /将e入栈,并返回栈STACK& pop(int &e); /出栈到e,并返回栈STACK& as
3、sign(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const; /打印栈STACK( ); /销毁栈;2.需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。二、系统设计概要设计介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。三、软件开发该实验代码我用CodeBlocks进行编写并调试。四、软件测试1)总体界面如图1所示:图12)进行入栈操作,如图2所示:图23)进行打印栈操作,如图3所示:图34)进行出栈操作,如图4所示
4、:图45)用下标去元素,如图5所示:图56)栈中实际元素的个数如图6所示:图6五、源码和说明1.文件清单及其功能说明main.c 是源程序2.exe 是可执行文件2.用户使用说明书使用CodeBlocks进行编译,或者直接打开可执行文件。3.源代码#include#include#include#include using namespace std;class STACK int * elems; /申请内存用于存放栈的元素 int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0; public: STACK(int m);/初始化栈:最多m个元
5、素 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(i
6、nt m):max(m),elems(new intm) pos=0;STACK:STACK(const STACK&s):max(s.max),elems(s.elems) pos=0; int STACK:size() const return max; int STACK:getelem (int x) const if(pos=0) coutpos) cout=max) cout空间不够!n; else *(elems+pos)=e; pos+; cout*(elems+pos-1); return (*this); STACK&STACK: pop(int &e) if(pos=0)
7、 cout栈为空; else e=*(elems+pos-1); pos-=1; return(*this); STACK& STACK:assign(const STACK&s) pos=s.pos; return (*this); void STACK:print()const cout最大量:maxendl; cout当前的元素个数:posendl; cout=0;i-) cout*(elems+i)t; STACK:STACK() delete elems; pos=0; max=0; void menu(void) coutt*n; coutt 1.返回栈的最大元素个数max; co
8、uttt 2.返回栈的实际元素个数posn; coutt 3.取下标x处的栈元素; coutttt 4.将e入栈,并返回栈n; coutt 5.出栈到e,并返回栈; coutttt 6.赋s给栈,并返回被赋值的栈n; coutt 7.打印栈; couttttt 8.销毁栈n; coutttt 0.退出程序n; coutt*n;int main() int m; int x1; int op; int t,x,x2,e,e3,e4; coutm; STACK st1(m); STACK st2(st1); cout初始化栈:最多m个元素完成n用栈s拷贝初始化栈完成n; Sleep(3000);
9、dosystem(cls);menu();coutop; switch(op) case 1: t=st1.size(); cout当前栈的大小为: t; getchar();getchar(); break; case 2: x=st1.howMany(); cout实际元素为 :xn; getchar();getchar(); break; case 3: cout请输入想得到的元素的下标:x1; x2=st1.getelem(x1); cout下表为x1的元素:x2; getchar();getchar(); break; case 4: coute; st1=st1.push(e);
10、getchar();getchar(); break; case 5: st1=st1.pop(e3); cout出栈元素为e3; getchar();getchar(); break; case 6: st2=st2.assign(st1); getchar();getchar(); break; case 7: coute4; if(e4=1) st1.print(); else st2.print(); getchar();getchar(); break; case 8: coute5; if(e5=1) st1.STACK(); else st2.STACK(); getchar();getchar(); break; default: cout输入有误请重新输入:; break; while(op);couttt*谢谢使用*nendl; return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1