class Node:
def __init__(self, v):
self.v = v
self.n = None
class Stack:
def __init__(self):
super(Stack, self).__init__()
self.count = 0
self.head = Node(None)
def add(self, node):
if self.count == 0:
self.head = node
self.count += 1
else:
node.n = self.head
self.head = node
self.count += 1
def pop(self):
if self.count != 0:
item = self.head.v
self.head = self.head.n
return item
else:
return None
if __name__ == '__main__':
# 逆波兰表达式求值
s = "312+*3*"
stack = Stack()
for item in s:
if item in ['+', '*', '-', '/']:
a = int(stack.pop())
b = int(stack.pop())
if item == '+':
c = b + a
elif item == '-':
c = b - a
elif item == '/':
c = b / a
else:
c = b * a
node = Node(c)
stack.add(node)
else:
node = Node(item)
stack.add(node)
print(stack.head.v)
逆波兰表达式求值--python
最新推荐文章于 2022-06-25 10:41:06 发布