题目描述
用两个栈实现队列,支持队列的基本操作。
输入描述:
第一行输入一个整数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())


京公网安备 11010502036488号