使用堆栈的 JavaScript 前缀计算器
我们需要使用 JavaScript 中的堆栈以 RPN(逆波兰表示法)输入方法来制作一个计算器。
考虑以下输入数组 −
const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];
流程 −
1 是一个操作数,推入堆栈。
5 是一个操作数,推入堆栈。
‘+’ 是一个运算符,弹出 1 和 5,计算它们并将其结果推入堆栈。
6 是一个操作数,推入堆栈。
3 是一个操作数,推入堆栈。
'-' 是一个运算符,弹出 6 和 3,计算它们并将其结果推入堆栈。
'/' 是一个运算符,弹出 6 和 3,计算它们并将其结果推入堆栈。
7 是一个操作数,推入堆栈。
'*' 是一个运算符,弹出 2 和 7,计算它们并将其结果推入堆栈。
最后,输出应该是 −
const output = 14;
示例
代码如下 −
const arr = [1, 5, '+', 6, 3, '−', '/', 7, '*'];
const stackCalculator = (arr = []) => {
const options = {
'+': (a, b) => a + b,
'−': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b
};
const stack = [];
arr.forEach(value => {
stack.push(value in options
? options[value](...stack.splice(-2))
: value
);
});
return stack;
};
console.log(stackCalculator(arr));输出
控制台中的输出如下 −
[14]
广告
数据结构
网络连接
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP