class RailExpress(): def __init__(self, express): self.fontExpress = express self.railExpress = [] self.size = len(express) self.stack = Stack(self.size) self.queue = Queue(self.size) self.level = {'+': 1, '-': 1, '*': 2, '/': 2, '(': 3, ')': 3} self.operators = ['+', '-', '*', '/', '(', ')'] self.makeRailExpress() def makeRailExpress(self): for i in self.fontExpress: if i in self.operators: if i is self.operators[-1]: ele = self.stack.pop() while ele is not self.operators[-2]: self.queue.push(ele) ele = self.stack.pop() if self.stack.isEmpty(): break elif i is self.operators[-2]: self.stack.push(i) else: if not self.stack.isEmpty(): while self.stack.returnFristEle( ) is not self.operators[-2] and self.level[ self.stack.returnFristEle()] >= self.level[i]: ele = self.stack.pop() self.queue.push(ele) if self.stack.isEmpty(): break self.stack.push(i) else: self.queue.push(i) if not self.stack.isEmpty(): stack = self.stack.returnStack() stack.reverse() self.queue.returnQueue().extend(stack)
class RailExpress(): def __init__(self, express): self.fontExpress = express self.railExpress = [] self.size = len(express) self.stack = Stack(self.size) self.queue = Queue(self.size) self.level = {'+': 1, '-': 1, '*': 2, '/': 2, '(': 3, ')': 3} self.operators = ['+', '-', '*', '/', '(', ')'] self.makeRailExpress() def makeRailExpress(self): for i in self.fontExpress: if i in self.operators: if i is self.operators[-1]: ele = self.stack.pop() while ele is not self.operators[-2]: self.queue.push(ele) ele = self.stack.pop() if self.stack.isEmpty(): break elif i is self.operators[-2]: self.stack.push(i) else: if not self.stack.isEmpty(): while self.stack.returnFristEle() is not self.operators[-2] and self.level[self.stack.returnFristEle()] >= self.level[i]: ele = self.stack.pop() self.queue.push(ele) if self.stack.isEmpty(): break self.stack.push(i) else: self.queue.push(i) if not self.stack.isEmpty(): stack = self.stack.returnStack() stack.reverse() self.queue.returnQueue().extend(stack)