课程作业五

课程作业五

题目描述

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

上次作业我已经将我的一个类分为了四个类,而且已经进行了代码的实现。

GIT传送门

基本架构

数据结构栈的知识

在四则运算器的计算算式的值的编写中,我用到了栈。下面是我所学到的一些知识。

栈是一种特殊的线性表,只能从固定的方向进出,而且栈进出的基本原则是:先进栈的元素后出栈。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。

  1. 使用栈时,先包含相关的头文件
#include<stack> 
  1. 定义栈
stack<栈的类型> 栈的名字;
  1. 栈的标准库函数

s为栈的名字
s.empty() 如果栈为空返回true,否则返回false
s.size() 返回栈中元素的个数
s.pop() 删除栈顶元素但不返回其值
s.top() 返回栈顶的元素,但不删除该元素
s.push() 在栈顶压入新元素
```

栈的图示

学习心得

由于之前C语言的上机课有进行过栈的学习,所以对栈也有了一定的基本了解,在计算器的编码中也用到了一些栈的知识。但是也遇见过一些非法访问的错误,在这次学习后也会注意这些问题。在学习过程中也接触了“堆”这个概念,堆是无序的,可以任意的取和插入,而栈不是这样子的。我觉得堆和栈的区别就在于:一个是静态,一个是动态。堆是在程序运行时自动分配的。使用时要注意释放内存。(我觉得和链表很像)

原文地址:https://www.cnblogs.com/031602523liu/p/6884758.html