四则运算表达式的计算堆栈结构(C代码)

简介: 四则运算表达式的计算堆栈结构(C代码)


四则运算表达式的计算

一、堆栈如何实现

堆和栈都是内存里面的一块存储区域。堆是还尚未使用的内存区域,栈是我们可以存放一些变量值的地方,而且栈的数据存放顺序是从下向上生长的,先入后出,后入先出。

在这里插入图片描述

2188041a99a8d23f10461ad05dcbca9.jpg


思考一下我们应该使用什么数据类型来实现堆栈这种数据结构哪?

不用怀疑肯定是数组了,我们可以预先设定一个合理大小的某个数据类型数组来存放我们需要的某一类数据。

例如:

用浮点型数组去存放操作数,用字符型数组存放操作符,如下所示:ab39696198a96a662439a8686b2a5ae.jpg

OPS是运算符栈,里面存放着各种待进行的运算。

OVS是操作值栈,里面存放着各种待操作的数值。topp和topv分别是这两个栈的栈顶元素(后续编代码对栈顶元素的处理挺重要的)。


二、计算机如何得到四则运算表达式

一个表达式:

A+B*C-D/E;

这里面的字母都是数字,操作符都是字符类型的。但是当我们用c语言实现四则混合运算时,是用scanf()来实现表达式的输入的即:

“A+B*C-D/E;”//比如为:"33.37+2*5-9.0/10;"

这时候肯定是字符了。

我使用的方法主要是循环加多条件分支判断语句。

后续会出一个这个小项目的专栏,会讲解的很清楚的,希望得到大家的支持。

相关文章
|
8月前
|
存储 Unix 编译器
初始C语言(6)——详细讲解表达式求值以及其易错点
初始C语言(6)——详细讲解表达式求值以及其易错点
102 0
|
6天前
|
编译器 程序员 C++
C/C++逻辑与运算与汇编指令的关系
C/C++逻辑与运算与汇编指令的关系
16 0
|
6月前
|
C语言
C语言操作符优先级表格(建议收藏,每次看一下)
C语言操作符优先级表格(建议收藏,每次看一下)
|
8月前
|
C++
C++第3~4章:运算\程序流程结构
C++第3~4章:运算\程序流程结构
47 0
|
9月前
|
算法 C语言
C语言基本结构:顺序、选择和循环
C语言基本结构:顺序、选择和循环
102 0
|
Java
中缀转后缀表达式,带括号的后缀表达式综合计算器,Java栈数据结构实现
中缀转后缀表达式,带括号的后缀表达式综合计算器,Java栈数据结构实现
320 0
|
算法 Java
数据结构—栈的应用举例【算术表达式求值转换、后缀表达式求值计算】
数据结构—栈的应用举例【算术表达式求值转换、后缀表达式求值计算】
142 0
数据结构—栈的应用举例【算术表达式求值转换、后缀表达式求值计算】
|
C语言
C语言“交换两个变量的值”和求十个数中最大的数(流程图、代码)
C语言“交换两个变量的值”和求十个数中最大的数(流程图、代码)
349 0
C语言“交换两个变量的值”和求十个数中最大的数(流程图、代码)