基本思路:
- 创建用于保存运算符的空栈 operation_stack,以及一个用于保存结果的空列表 postfix_list
- 使用字符串方法 split() 将输入的终须表达式转换成一个列表
- 从左往右扫描这个标记列表。
- 如果标记是操作数,将其添加到结果列表的末尾。
- 如果标记是左括号,将其压入 operation_stack 中。
- 如果标记是有括号,反复从 operation_stack 栈中移除元素,直到移除对应的左括号。将从栈中取出的每一个运算符都添加到结果列表的末尾。
- 如果标记是运算符,将其压入 operation_stack 栈中。但是,在此之前,需要先从栈中取出优先级更高或相同的运算符,并将它们添加到结果列表的末尾。
- 当处理完输入表达式后,检查 operation_stack ,将其中所有残留的运算符全部添加到结果列表的末尾。
代码实现:
class Stack(object):
def __init__(self, limit=10):
self.stack = [] # 存放元素
self.limit = limit # 栈容量极限
def push(self, data):
# 判断栈容量是否超出范围
if len(self.stack) >= self.limit: