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