博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017《面向对象程序设计》课程作业五
阅读量:5298 次
发布时间:2019-06-14

本文共 1558 字,大约阅读时间需要 5 分钟。

题目描述

  • 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
  • 学习数据结构栈的知识。

作业要求

  • 本次作业要求将程序写成.cpp和.h分离的形式
  • 根据设计的类图进行编码,搭建主体框架
  • 本次作业不要求实现核心的算法功能
  • 发表一篇博客,博客内容为:提供本次作业的github链接,对栈的知识学习探索。

代码

在上次作业,已经实现了编码:

  • 代码结构(主体框架):

1092889-20170513222038785-1892042708.png

对栈的学习与探索

上次的作业,已经学习了栈的知识,并把它融入到了表达式的生成:

  • 类的声明
class stack//栈{private:int top;        char ch[MAX];public:void initstack(void);       void push(char *data);       char pop(void);       bool isempty(void);       stack() {};       ~stack() {};};

-成员函数

//******stack*******void stack::initstack(void){    top = -1;    int i = 0;    for (i = 0; i < MAX; i++)ch[i] = NULL;}bool stack::isempty(void){    if (top == -1)return true;    else return false;}void stack::push(char *data){    int len = strlen(data),i;    top++;    if (strlen(ch)+len >= MAX)cout << "The stack is full!" << endl;    else         for (i = 0; i < len; i++) {            ch[top] = data[len - i - 1];            top++;        }    top--;}char stack::pop(void){    char temp;    if (isempty())cout << "The stack is empty!!" << endl;    else {        temp = ch[top];        ch[top] = NULL;        top--;        return temp;    }}

栈的小结:

  • 栈是一种运算受限的线性表,栈的特点是后进先出,主要的功能是进栈和出栈。
  • 栈可以用链表或者数组实现,当内存足够时可以使用数组,用前先划定出一块内存来使用栈;当内存不足时可以使用链表,动态地使用内存。在这里我使用了数组。
  • 用一个top来标志栈顶,进栈时top++,元素入栈,出栈时输出栈顶元素,删除元素,top--。
  • 使用前先划定一个范围,过程中需要包括top是否超出所划定范围的判断。

完成体会

  • 因为这次作业的大部分要求,已经在中完成,不止完成了框架,学习了栈,代码也已经编好。所以这次将框架提取出来,查找资料深入学习了一下栈,在这里总结了一下栈的特点用法。
  • 之前的代码已经分为.h和.cpp文件,为了使结构更清晰,我把主函数和成员函数也分离开来。
  • 对代码做了一次更新,添加了新学的构造函数和析构函数等。

转载于:https://www.cnblogs.com/vancasola/p/6883899.html

你可能感兴趣的文章
C语言作业3
查看>>
.Net Core中的通用主机(二)——托管服务
查看>>
C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码
查看>>
koogra--Excel文件读取利器
查看>>
ASP.NET 使用ajaxupload.js插件出现上传较大文件失败的解决方法
查看>>
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>
(springboot)freemarker(二)
查看>>
linux下golang gRPC配置详解
查看>>
mongodb 简单使用说明
查看>>
eclipse的调试方法的简单介绍
查看>>
OneAPM 云监控部署与试用体验
查看>>
加固linux
查看>>
wget 升级
查看>>
为什么需要大数据安全分析?
查看>>
day13.字典复习
查看>>
IPSP问题
查看>>
(转)Java中的String为什么是不可变的? -- String源码分析
查看>>
HNU 10362 A+B for Input-Output Practice (II)
查看>>
iOS——UIButton响应传参数
查看>>