面向对象程序设计实验报告一

上传人:大米 文档编号:563370507 上传时间:2022-08-29 格式:DOC 页数:9 大小:142.50KB
返回 下载 相关 举报
面向对象程序设计实验报告一_第1页
第1页 / 共9页
面向对象程序设计实验报告一_第2页
第2页 / 共9页
面向对象程序设计实验报告一_第3页
第3页 / 共9页
面向对象程序设计实验报告一_第4页
第4页 / 共9页
面向对象程序设计实验报告一_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《面向对象程序设计实验报告一》由会员分享,可在线阅读,更多相关《面向对象程序设计实验报告一(9页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上课 程 实 验 报 告课程名称:面向对象程序设计实验名称:面向过程的整型栈编程院 系 :计算机科学与技术 专业班级 : CS1203 学 号 :U 姓 名 : 肖双 指导教师 : 马光志 2015 年 1 月 6 日一、 需求分析1. 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程, 然后写一个main函数对栈的所有操作函数进行测试。struct STACK int *elems;/申请内存用于存放栈的元素 in

2、t 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, in

3、t &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. 需求分析 按题目要求定义一个栈,并完成对栈的各种操作。二、 系统设计1. 概要设计1) 定义一个整型栈2) 完成下列函数: void initSTACK(STACK *const p, int m);/初始化p指向的栈:最多m个元素void initSTACK(STAC

4、K *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指向的

5、栈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 *c

6、onst 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.入

7、口参数: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出口参数:空三、 软件开发 使用的软件为codebrocks.四

8、、 软件测试 测试栈的初始化、入栈、出栈、打印栈等函数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指向的栈五、 特点与不足1. 技术特点 程序比较简洁易懂,一目了然。2. 不足和改进的建议测试时需要修改main程序,没有人机交互界面,测试不方便。改进的建议是设计一个人机交互界面,使用户操作起来更方便。六、 过程和体会1. 遇到的主要问题和解决方法主要问题:遗忘了关于栈的操作的

9、具体内容,写起来比较生涩解决方法:认真复习了一下栈的操作。2. 课程设计的体会学过的知识要时常拿出来复习,才能真正掌握它们。做实验时要认真思考,学会灵活运用已掌握的知识,争取举一反三。七、 源码和说明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 stru

10、ct 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); /将

11、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

12、入栈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_SI

13、ZE*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 i=0; ielemsi =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号