练一练「CLZ 的银行普通队列」
题目描述
输入描述
输出描述
输入输出样例
示例 1
输入
5
IN xiaoming N
IN Adel V
IN laozhao N
OUT N
IN CLZ V
copy
输出
Adel
CLZ
laozhao
copy
运行限制
最大运行时间:1s
最大运行内存: 128M
根据老师的资料,结合自己的认识。写出如下代码:
Vqueue = []#v队列
Vhead = 0#首指针
Vtail = 0#尾指针
Nqueue = []#N队列
Nhead = 0
Ntail = 0
def inque(name, type):#入队函数
global Vhead, Vtail, Nhead, Ntail,Vqueue ,Nqueue
if (type == 'V'):#设置 Type 位来表示是哪一个队列
Vqueue.append(name)
Vtail += 1
else:
Nqueue.append(name)
Ntail += 1
# print(Vqueue)
def getHead(type):##写出获取队头元素的代码,队列我们只需要关心谁排在第一个
global Vhead, Vtail, Nhead, Ntail,Vqueue ,Nqueue
if (type == 'V'):#仍需设置 Type 位来表示是哪一个队列
# print(Vhead)
return Vqueue[Vhead]
else:
# print(Nhead)
return Nqueue[Nhead]
def outque(type):#出队函数
global Vhead, Vtail, Nhead, Ntail,Vqueue ,Nqueue
if (type == 'V'):
if (Vhead == Vtail):#队伍没有人不能再出队了
return None
else:
s = getHead(type)
Vhead += 1#head前的数据都是无效数据,无需删除,逻辑明确即可
return s
else:
if (Nhead == Ntail):
return None
else:
s= getHead(type)
Nhead += 1
return s
if __name__ == '__main__':
M = 0
M = int(input())#输入M
while M > 0:#循环M次
M -= 1
op = input().split()
# print(op[0])
if op[0] == 'IN':
inque(op[1], op[2])
# print('in')
else:
outque(op[1])
# print('out')
# print("VVVVV",Vqueue)
# print("NNNN",Nqueue)
# print(M)
s = outque('V')
while s!=None:
print(s)
s = outque('V')
s = outque('N')
while s != None:
print(s)
s = outque('N')`