# 由两个栈组成的队列
class TwoStackQueue:
def __init__(self):
self.stackPush = []
self.stackPop = []
def add(self, pushInt):
self.stackPush.append(pushInt)
def poll(self):
if not (self.stackPop or self.stackPush):
raise RuntimeError("Queue is empty")
elif not self.stackPop:
while self.stackPush:
self.stackPop.append(self.stackPush.pop())
return self.stackPop.pop()
def peek(self):
if not (self.stackPop or self.stackPush):
raise RuntimeError("Queue is empty")
elif not self.stackPop:
while self.stackPush:
self.stackPop.append(self.stackPush.pop())
return self.stackPop[-1]
if __name__ == "__main__":
queue = TwoStackQueue()
queue.add(1)
queue.add(2)
print(queue.poll())
queue.add(3)
print(queue.peek())