多团队排队
'''有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,\
那么新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会被排到长队的队尾。
现在输入n个数,对于其中每一个数x,如果x为0则代表长队的对首出队,否则则代表团队号为x的人进入长队。
例如:1 1 3 0 1 0 代表
1进队— 1进队—3进队—1出队 —1进队—1出队
现要求对于每个0都输出团队编号
所有人的编号都在1到5000000之间。
团队不超过20个
保证不会有非法输入
输入:
12
1 3 1 2 3 0 0 0 2 0 0 0
输出:
1 1 3 3 2 2
'''
n=int(input())
li=input().split()
建队入队出队
head=0
tail=0
que=[""]*4
que[tail]="A"
tail+=1
que[tail]="B"
tail+=1
que[tail]="C"
tail+=1
que[head]=""
head+=1
用链表实现队列
class linknode:
def __init__(self):
self.data=None
self.next=None
class queuelink:
def __init__(self):
self.head=None
def enqueue(self,data1):
tlink=linknode()
tlink.data=data1
if self.head is None:
self.head=tlink
else:
tail=self.head
while tail.next:
tail=tail.next
tail.next=tlink
tlink.next=linknode()
def dequeue(self):
temp=self.head.data
self.head=self.head.next
return temp
用数组实现队列
class queueshuzu:
def __init__(self,n):
self.n=n
self.item=[""]*self.n
self.head=0
self.tail=0
def enqueue(self,item1):
self.item[self.tail]=item1
self.tail+=1
def dequeue(self):
temp=self.item[self.head]
self.head+=1
return temp