版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计实验报告课 程 实 验 报 告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院 系 : 计算机科学与技术 专业班级 : CS1209班 学 号 : 姓 名 : 指导教师 : 李春花 2014 年 1 月 22 日1、 需求分析1. 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems;/申请内存用于存放栈的元素 co
2、nst 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,并返回栈ST
3、ACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const;/打印栈STACK( );/销毁栈;2. 需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2、 系统设计概要设计介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。3、 软件开发该实验代码我用CodeBlocks进行编写并调试。4、 软件测试1) 总体界面如图1所示:图12) 进行入栈操作,如图2所示:图23) 进行打印栈操作,如图
4、3所示:图34) 进行出栈操作,如图4所示:图45) 用下标去元素,如图5所示:图56)栈中实际元素的个数如图6所示:图65、 源码和说明1. 文件清单及其功能说明main.c 是源程序2.exe 是可执行文件2. 用户使用说明书使用CodeBlocks进行编译,或者直接打开可执行文件。3. 源代码#include<iostream>#include<stdlib.h>#include<stdio.h>#include <windows.h>using namespace std;class STACK int * elems;/申请内存用于存放
5、栈的元素 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,并
6、返回栈 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) cout<<"
7、栈为空!n" else if(x>pos) cout<<"当前的元素不存在:n" else return elemsx; int STACK:howMany ( ) const return pos; STACK& STACK: push(int e) if(pos>=max) cout<<"空间不够!n" else *(elems+pos)=e; pos+; cout<<*(elems+pos-1); return (*this); STACK&STACK: pop(int &a
8、mp;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<<"最大量:"<<max<<endl; cout<<"当前的元素个数:"<<pos<<endl; cout&
9、lt;<"里面的元素为:" for(int i=pos-1;i>=0;i-) cout<<*(elems+i)<<"t" STACK:STACK() delete elems; pos=0; max=0; void menu(void) cout<<"t*n" cout<<"t 1.返回栈的最大元素个数max" cout<<"tt 2.返回栈的实际元素个数posn" cout<<"t 3.取下标x处的栈
10、元素" cout<<"ttt 4.将e入栈,并返回栈n" cout<<"t 5.出栈到e,并返回栈" cout<<"ttt 6.赋s给栈,并返回被赋值的栈n" cout<<"t 7.打印栈" cout<<"tttt 8.销毁栈n" cout<<"ttt 0.退出程序n" cout<<"t*n"int main() int m; int x1; int op; in
11、t t,x,x2,e,e3,e4; cout<<"请输入栈的最大容量m:n" cin>>m; STACK st1(m); STACK st2(st1); cout<<"初始化栈:最多"<<m<<"个元素完成n用栈s拷贝初始化栈完成n" Sleep(3000); dosystem("cls");menu();cout<<"请输入序号:n" cin>>op;switch(op) case 1: t=st1.size(
12、); cout<<"当前栈的大小为: "<<t; getchar();getchar(); break; case 2: x=st1.howMany(); cout<<"实际元素为 :"<<x<<"n" getchar();getchar();break; case 3: cout<<"请输入想得到的元素的下标:"<<"n" cin>>x1; x2=st1.getelem(x1); cout<&
13、lt;"下表为"<<x1<<"的元素:"<<x2; getchar();getchar(); break; case 4: cout<<"请输入想压栈的元素:" cin>>e; 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: cout<<"请输入想打印的栈1or2n" cin>>e4; if(e4=1) st1.print(); else st2.print(); getchar();getchar(); break; case 8: cout<<"请输入想销毁的栈1or2&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46686.1-2025标准知识图谱第1部分:实现指南
- 妇产科男医生职业前景
- 全员培训音乐课件
- 餐饮行业消防安全典范
- 烟草员工职业规划指南
- 国外安全生产获奖案例讲解
- 美容顾问销售手册
- 国际邮轮乘务就业方向
- 普通二本法学院就业前景
- 顶尖人工智能专家之道
- 显示设备安装与调试方案
- 输液连接装置安全管理专家共识解读
- 掘进工安全操作规程
- 作词进阶教学课件下载
- 2025上海复旦大学人事处招聘办公室行政管理助理岗位1名考试参考试题及答案解析
- 燃气巡线员安全培训课件
- 2025版离婚协议书样本:婚姻关系解除与子女抚养安排
- GJB827B--2020军事设施建设费用定额
- 业主装修物业免责协议书
- 2025-2030年中国海底节点(OBN)地震勘探市场深度分析及发展前景研究预测报告
- 香蕉糖度实时检测-洞察及研究
评论
0/150
提交评论