题目描述
- 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
- 学习数据结构栈的知识。
作业要求
- 本次作业要求将程序写成.cpp和.h分离的形式
- 根据设计的类图进行编码,搭建主体框架
- 本次作业不要求实现核心的算法功能
- 发表一篇博客,博客内容为:提供本次作业的github链接,对栈的知识学习探索。
代码
在上次作业,已经实现了编码:
- 代码结构(主体框架):
对栈的学习与探索
上次的作业,已经学习了栈的知识,并把它融入到了表达式的生成:
- 类的声明
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文件,为了使结构更清晰,我把主函数和成员函数也分离开来。
- 对代码做了一次更新,添加了新学的构造函数和析构函数等。