使用堆栈和队列的C++计算器
C++ Calculator using Stacks and Queues
我正在努力理解课堂上的一个主题,即使用堆栈和队列来编程计算器。我理解什么是中缀和后缀表达式,但它如何使程序更容易地评估表达式,以及为什么队列和堆栈在这种情况下是理想的?感谢
它使操作顺序更易于处理,例如:
+ * - 4 2 5 3
只能表示
((4 - 2) * 5) + 3
这对我们来说可能更容易阅读,但我们需要知道运算的顺序并匹配括号才能弄清楚。
至于实现:如果你有一个堆栈,你可以如下处理上面的表达式:
- 读取
+
(一个操作),将其推到堆栈上 - 读取
*
(一个操作),将其推到堆栈上 - 读取
-
(一个操作),将其推到堆栈上 - 读取
4
(一个数字),堆栈顶部不是数字,所以将其推到堆栈上 - 读取
2
(一个数字),堆栈的顶部是一个数字,所以从堆栈中弹出两次,得到4 - 2
,计算它(2
),并将结果(2
)推送到堆栈上 - 读取
5
(一个数字),堆栈的顶部是一个数字,所以从堆栈中弹出两次,得到2 * 5
,将结果(10
)推送到堆栈上 - 读取
3
(一个数字),堆栈的顶部是一个数字,所以从堆栈中弹出两次,得到3 + 10
,将结果(13
)推送到堆栈上 - 没有剩余内容可供读取,从堆栈中弹出并返回结果(
13
)
正如你所看到的,表达式是使用一些简单的规则来计算的,而不必在整个字符串中搜索括号,也不必决定乘法是否优先于加法和减法。
相关文章:
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 我在c ++矩阵计算器程序中找不到错误
- C++计算器,不能单独除以 0
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- Arduino 基础 2 计算器无法C++工作
- 需要有关我的平均计算器代码的建议
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- C++计算器运算符
- 使用WIN32 API的击球平均计算器
- RPN计算器c++错误处理和多个运算符
- C++查找用于构建单行计算器
- 如何修复这个基本计算器
- 用于加法和减法的十六进制计算器
- 桌面计算器出现问题.C++程序设计语言
- 如何对堆栈中的所有项目求和?Postfix计算器
- RPN计算器使用头文件进行计算操作和堆栈;用于堆栈的矢量
- 如何在我的基本计算器中循环遍历数组
- 如果 GPA 计算器的语句问题
- 我的C++计算器似乎出了什么问题?