




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计实验报告课 程 实 验 报 告课程名称:面向对象程序设计实验名称:面向过程的整型栈编程院 系 :计算机科学与技术 专业班级 : CS1203 学 号 :U 姓 名 : 肖双 指导教师 : 马光志 2015 年 1 月 6 日1、 需求分析1. 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯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 howMany (const STACK *const p);/返回p指向的栈的实际元素个数posSTACK *const push(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /赋s给p指的栈,并返回pvoid print(const STACK*const p);/打印p指向的栈void destroySTACK(STACK*const p);/销毁p指向的栈2. 需求分析 按题目要求定义一个栈,并完成对栈的各种操作。2、 系统设计1. 概要设计1) 定义一个整型栈2) 完成下列函数: void initSTACK(STACK *const p, int m);/初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); /用栈s初始化p指向的栈int howMany (const STACK *const p);/返回p指向的栈的实际元素个数posSTACK *const push(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /赋s给p指的栈,并返回pvoid print(const STACK*const p);/打印p指向的栈void destroySTACK(STACK*const p);/销毁p指向的栈 3)创建主函数,测试上述函数。2. 详细设计2.1初始化模块: 1)void initSTACK(STACK *const p, int m);功能:初始化p指向的栈:最多m个元素流程:创建一个内存为m的栈,定义一个指向栈m的指针p.入口参数:p,m出口参数:空 2) void initSTACK(STACK *const p, const STACK&s); 功能:用栈s初始化p指向的栈流程:开辟内存,分别将栈s栈能存放的最大元素个数和栈中元素赋给p指向的栈入口参数:p,s出口参数:空 3)STACK *const assign(STACK*const p, const STACK&s); 功能:赋s给p指的栈,并返回p流程:分别将栈s栈能存放的最大元素个数和栈中元素赋给p指向的栈,返回p入口参数:p,s出口参数:p2.2调用栈的成员模块: 1)int howMany (const STACK *const p);功能:返回p指向的栈的实际元素个数pos流程:调用栈的实际元素个数pos入口参数:p出口参数:pos2.3入栈、出栈模块: 1)STACK *const push(STACK *const p, int e);功能:将e入栈,并返回p流程:栈中元素加1,栈的实际元素个数加1,返回p.入口参数:p,e出口参数:p 2) STACK *const pop(STACK *const p, int e);功能:出栈到e,并返回p流程:栈中元素减1,栈的实际元素个数减1,返回p入口参数:p,e出口参数:p2.4打印、销毁模块: 1)void print(const STACK*const p);功能:打印p指向的栈流程:按后进先出顺序输出.栈中的元素入口参数:p出口参数:空 2) void destroySTACK(STACK*const p);功能:销毁p指向的栈流程:销毁内存,栈的成员max、pos赋0.入口参数:p出口参数:空3、 软件开发 使用的软件为codebrocks.4、 软件测试 测试栈的初始化、入栈、出栈、打印栈等函数1、初始化p和s指向的最大元素为10的栈;2、将1、2、3、4、5按先后顺序入s指向的栈,并打印s指向的栈。3、对s指向的栈执行2次出栈操作,输出出栈的元素,并打印s指向的栈4、输出s指向的栈的实际元素个数5、赋s指向的栈给p指向的栈6、打印p指向的栈7、销毁p和s指向的栈5、 特点与不足1. 技术特点 程序比较简洁易懂,一目了然。2. 不足和改进的建议测试时需要修改main程序,没有人机交互界面,测试不方便。改进的建议是设计一个人机交互界面,使用户操作起来更方便。6、 过程和体会1. 遇到的主要问题和解决方法主要问题:遗忘了关于栈的操作的具体内容,写起来比较生涩解决方法:认真复习了一下栈的操作。2. 课程设计的体会学过的知识要时常拿出来复习,才能真正掌握它们。做实验时要认真思考,学会灵活运用已掌握的知识,争取举一反三。7、 源码和说明1. 文件清单及其功能说明实验1的工程、源文件main.c、可执行程序.exe文件。2. 用户使用说明书打开实验1中的c工程,运行就可看到结果。3. 源代码#include #include #include#include#define INIT_SIZE 5 /初始大小#define INCREASE_SIZE 5 /每次增加大小using namespace std;typedef struct STACK int *elems;/申请内存用于存放栈的元素 int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0; STACK;void initSTACK(STACK *const p, int m);/初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); /用栈s初始化p指向的栈int howMany (const STACK *const p);/返回p指向的栈的实际元素个数posSTACK *const push(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /赋s给p指的栈,并返回pvoid print(const STACK*const p);/打印p指向的栈void destroySTACK(STACK*const p);/销毁p指向的栈int main() int e; STACK p,s; initSTACK(&p,10);/初始化最大元素个数为10的栈 initSTACK(&s,10); push(&s,1); /将1入栈s push(&s,2); push(&s,3); push(&s,4); push(&s,5); print(&s); /打印栈s pop(&s,e); /出栈 pop(&s,e); print(&s); /assign(&p,s); /print(&p); return 0;void initSTACK( STACK *const p, int m) STACK s=(int*)malloc(m*sizeof(int),m,0; *p=s;void initSTACK(STACK *const p, const STACK&s) p-elems=(int*)malloc(INIT_SIZE*sizeof(int); p-max=s.max; for(int i=0; ielemsi = s.elemsi; int howMany (const STACK *const p) if(p-elems!=NULL)/若栈存在 return p-pos; else return 0;STACK *const push(STACK *const p, int e) if(p-elems!=NULL) int i=p-pos; p-elemsi=e; p-pos+; return p;STACK *const pop(STACK *const p, int &e) if(p-elems!=NULL) e=*(p-elems+p-pos-1); printf(%dn,e); p-pos-; return p; STACK *const assign(STACK*const p, const STACK&s) if(p-elems!=NULL) p-max=s.max; for(int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业机械基础课件
- 养护处年度安全培训计划课件
- 农业安全管理培训课件
- 养成刷牙的好习惯课件
- 化工企业安全培训讲师课件
- 化工仪表安全培训总结课件
- 内部安全培训相互监督课件
- 健身权益卡营销方案(3篇)
- 兴义摩托车安全驾驶培训课件
- 初中教师安全培训教案课件
- 云南学法减分题库及答案
- 江苏省制造业领域人工智能技术应用场景参考指引2025年版
- 三级医师查房制度考试题(含答案)
- 文旅公司考试试题及答案
- 2025至2030年中国公立医院行业发展监测及市场发展潜力预测报告
- 2025年全国翻译专业资格(水平)考试土耳其语三级笔译试卷
- 人工智能技术在网络安全威胁检测中的应用
- TCCEAS001-2022建设项目工程总承包计价规范
- UPS电池更换方案
- 金属、机械加工件成本核算方法(共8页)
- 公路损坏分类及识别
评论
0/150
提交评论