给定一个初始为空的队列和一系列入队、出队操作,请编写程序输出每次出队的元素。队列的元素值均为整数。
输入格式:
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d入队,0表示出队。n不超过20000。
输出格式:
按顺序输出每次出队的元素,每个元素一行。若某出队操作不合法(如在队列空时出队),则对该操作输出invalid。
样例”>样例”>样例”>输入样例:
7
1 1
1 2
0
0
0
1 3
0
输出样例:
1
2
invalid
3
解析: 最开始使用的是python的队列(Queue)进行操作,但是因为输入样例有两个的时候,也有一个的时候,所以即使是在进行队列的增加和删除时比较方便,但是解决同时输入两个或者一个的问题的时候却遇到了麻烦,所以后面改作了列表进行操作,使用的也是二维列表,队列的思想比较简洁明了,即先进先出,直接通过代码理解
其实使用python是比较麻烦的一种操作,通过c++的vector是比较简单的一种方法,但是本人最近因为一些原因在练习python,所以还是硬着头皮用python写的,其中的方法都不难理解
都是先通过判断来执行下一步的操作到底是要增加还是删除,但是该说不说c++真的香,一个合格的程序员应该使自己永远保持一种轻松的状态,多学一些知识融会贯通是很重要的
n = int(input())
i = 0
s = []
str = []
while i < n:
a = input().split()
s.append(a)
i += 1
for j in range(0,n):
if s[j][0] == '1':
str.append(s[j][1])
elif s[j][0] == '0':
if len(str) == 0:
print("invalid")
else:
pop = str.pop(0)
print(pop)
版权声明:本文为yao_xian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。