📅  最后修改于: 2023-12-03 15:36:58.070000             🧑  作者: Mango
前缀表达式:把运算符放在操作数前面的表达式。
例如:2 + 3 的前缀表达式为 + 2 3。
后缀表达式:把运算符放在操作数后面的表达式。
例如:2 + 3 的后缀表达式为 2 3 +。
将前缀表达式从右到左依次扫描每个元素,执行以下操作:
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
def size(self):
return len(self.items)
def prefix_to_postfix(expression):
stack = Stack()
operators = set(['+', '-', '*', '/', '(', ')'])
for char in reversed(expression):
if char not in operators:
stack.push(char)
else:
operand1 = stack.pop()
operand2 = stack.pop()
stack.push(operand1 + ' ' + operand2 + ' ' + char)
return stack.pop()
prefix_expression = '+ 2 * 3 4'
postfix_expression = prefix_to_postfix(prefix_expression)
print("Postfix expression:", postfix_expression)
以上代码使用了栈来辅助进行前缀到后缀转换,复杂度为 O(n)。