表达式转换
例:A+BC 是中缀表达式,它的后缀表达式为:ABC+
思路
遇到字母或者数字,直接输出。遇到运算符,先 push 到一个栈里,等遇到下一个运算符,和前一个比较一下,前一个优先级高的,就 pop 出去,把后来的 push 进去。后一个优先级高的,把他 push 到栈里。最后,再把栈里元素全部输出。
栈定义函数
class Stack(object):
def __init__(self):
self.item = []
def isEmpty(self):
return self.item == []
def push(self, data):
self.item.append(data)
def pop(self):
return self.item.pop()
def peek(self):
return self.item[len(self.item) - 1] # 返回栈顶元素
def search(self, x):
return self.item.index(x)
def size(self):
return len(self.item)
转换函数
def infix2Postfix(s):
prec = {}
prec[] =
prec[] =
prec[] =
prec[] =
prec[] =
stack = Stack()
result = []
tokenList = s.split()
token tokenList:
token token :
result.append(token)
token == :
stack.push(token)
token == :
topToken = stack.pop()
(topToken != ):
result.append(topToken)
topToken = stack.pop()
:
( stack.isEmpty() (prec[stack.peek()] >= prec[token])):
result.append(stack.pop())
stack.push(token)
( stack.isEmpty()):
result.append(stack.pop())
.join(result)


