题目描述
用两个栈实现队列,支持队列的基本操作。
输入描述:
第一行输入一个整数N,表示对队列进行的操作总数。
下面N行每行输入一个字符串S,表示操作的种类。
如果S为"add",则后面还有一个整数X表示向队列尾部加入整数X。
如果S为"poll",则表示弹出队列头部操作。
如果S为"peek",则表示询问当前队列中头部元素是多少。
输出描述:
对于每一个为"peek"的操作,输出一行表示当前队列中头部元素是多少。
示例1
输入
复制
6
add 1
add 2
add 3
peek
poll
peek
输出
复制
1
2
备注:
1<=N<=1000000
-1000000<=X<=1000000
数据保证没有不合法的操作
题解:
class Queue(): def __init__(self): self.L1 = [] self.L2 = [] def add(self, x): self.L1.append(x) def poll(self): if self.L2 == []: while self.L1 != []: self.L2.append(self.L1.pop()) return self.L2.pop() def peek(self): if self.L2 != []: return self.L2[-1] elif self.L1 != []: return self.L1[0] if __name__ == '__main__': L = Queue() N = int(input()) for _ in range(N): l = input().split() if l[0] == 'add': L.add(int(l[1])) elif l[0] == 'poll': L.poll() else: print(L.peek())