华中科技大学计算机学院C++实验报告-实验二_第1页
华中科技大学计算机学院C++实验报告-实验二_第2页
华中科技大学计算机学院C++实验报告-实验二_第3页
华中科技大学计算机学院C++实验报告-实验二_第4页
华中科技大学计算机学院C++实验报告-实验二_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计实验报告课 程 实 验 报 告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院 系 : 计算机科学与技术 专业班级 : CS1209班 学 号 : 姓 名 : 指导教师 : 李春花 2014 年 1 月 22 日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;/返回栈的最大元素个数maxint howMany ( ) const;/返回栈的实际元素个数posint 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( );/销毁栈;2. 需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2、 系统设计概要设计介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。3、 软件开发该实验代码我用CodeBlocks进行编写并调试。4、 软件测试1) 总体界面如图1所示:图12) 进行入栈操作,如图2所示:图23) 进行打印栈操作,如图3所示:图34) 进行出栈操作,如图4所示:图45) 用下标去元素,如图5所示:图56)栈中实际元素的个数如图6所示:图65、 源码和说明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个元素 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):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) 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; couttt 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); 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); 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论