1 用stack实现四则运算
时间: 2024-03-21 20:39:33 浏览: 21
可以使用栈来实现四则运算表达式的求值,具体步骤如下:
1. 创建两个栈,一个用于存储操作数,一个用于存储操作符。
2. 遍历表达式中的每个字符,如果是数字,则将其转换为操作数并压入操作数栈中;如果是操作符,则将其压入操作符栈中。
3. 如果遇到一个低优先级的操作符,则将栈顶的操作符弹出,并弹出两个操作数,进行计算,并将计算结果压入操作数栈中。
4. 最后,操作数栈中剩下的唯一元素就是表达式的计算结果。
以下是使用栈来实现四则运算的示例代码(假设表达式已经被转换为逆波兰表达式):
```python
def evalRPN(tokens):
stack = []
operators = set(['+', '-', '*', '/'])
for token in tokens:
if token not in operators:
stack.append(int(token))
else:
b = stack.pop()
a = stack.pop()
if token == '+':
stack.append(a + b)
elif token == '-':
stack.append(a - b)
elif token == '*':
stack.append(a * b)
elif token == '/':
stack.append(int(a / b))
return stack.pop()
```
在这个示例代码中,我们使用了一个 Python 列表作为栈,将整数和操作符压入栈中,然后在遇到操作符时弹出栈顶的两个操作数,并根据操作符进行计算,并将计算结果再次压入栈中。最后,当表达式遍历完毕时,栈中只剩下一个元素,这个元素就是表达式的计算结果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)