思路:先创建一个队列的类,然后将每次输入的指令执行对应的输出存在一个新的列表中,最后顺序打印出来即可,详看代码。
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输入格式
第一行一个数字N。
下面N行,每行第一个数字为操作命令(1)入队、(2)出队并输出、(3)计算队中元素个数并输出。
输出格式
若干行每行显示一个2或3命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
样例输入
7
1 19
1 56
2
3
2
3
2
样例输出
19
1
56
0
no
数据规模和约定
1<=N<=50
代码:
class Queue:
def __init__(self):
self.queue = []
def enqueue(self,x): # 入队
self.queue.insert(0,x)
def dequeue(self): # 出队
if len(self.queue) == 0:
return 'no'
a = self.queue.pop()
return a
def size(self): # 队列的大小
return len(self.queue)
def fun(a,s,count=0):
'''
count 的作用是用来记录入队和出队的次数,一旦count小于0,说明此时应该跳出循环
'''
if a[0] == 1:
queue.enqueue(a[1])
count += 1
elif a[0] == 2:
s.append(queue.dequeue())
count -= 1
elif a[0] == 3:
s.append(queue.size())
return s,count
if __name__ == "__main__":
queue = Queue() # 队列
n = int(input())
if 1<=n<=50:
s = []
count = 0
while n > 0:
a = list(map(int,input().split()))
s,count = fun(a,s,count)
if count < 0:
break
n -= 1
for i in s:
print(i)