课程作业五
题目描述
- 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
- 学习数据结构栈的知识。
上次作业我已经将我的一个类分为了四个类,而且已经进行了代码的实现。
基本架构
数据结构栈的知识
在四则运算器的计算算式的值的编写中,我用到了栈。下面是我所学到的一些知识。
栈是一种特殊的线性表,只能从固定的方向进出,而且栈进出的基本原则是:先进栈的元素后出栈。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
- 使用栈时,先包含相关的头文件
#include
- 定义栈
stack <栈的类型> 栈的名字; 栈的类型>
栈的标准库函数
s为栈的名字s.empty() 如果栈为空返回true,否则返回false s.size() 返回栈中元素的个数 s.pop() 删除栈顶元素但不返回其值 s.top() 返回栈顶的元素,但不删除该元素 s.push() 在栈顶压入新元素
栈的图示
学习心得
由于之前C语言的上机课有进行过栈的学习,所以对栈也有了一定的基本了解,在计算器的编码中也用到了一些栈的知识。但是也遇见过一些非法访问的错误,在这次学习后也会注意这些问题。在学习过程中也接触了“堆”这个概念,堆是无序的,可以任意的取和插入,而栈不是这样子的。我觉得堆和栈的区别就在于:一个是静态,一个是动态。堆是在程序运行时自动分配的。使用时要注意释放内存。(我觉得和链表很像)