class queuearray:
DefaultCapacity=10
def __init__(self):
#create an empty list of nones
self.data=[None]*self.DefaultCapacity
self.size=0
self.front=0
def __len__(self):
return self.size
def is_empty(self):
return self.size==0
def first(self):
if self.is_empty():
raise Exception('Queue Is Empty')
return self.data[self.front]
def dequeue(self):
if self.is_empty():
raise Exception('Queue Is Empty')
answer=self.data[self.front]
self.data[self.front]=None
self.front=(self.front+1)%len(self.data)
self.size-=1
return answer
def enqueue(self,e):
if self.size==self.DefaultCapacity:
self.resize(2*len(self.data))
aval=(self.front+self.size)%len(self.data)
self.data[aval]=e
self.size+=1
def resize(self,cap):
old=self.data
#build a new list of anew size have nones
self.data=[None]*cap
walk=self.front
for k in range(self.size):
self.data[k]=old[walk]
walk=(1+walk)%len(old)
self.front=0
s=queuearray()
#s.dequeue()
s.enqueue(5)
print(s.first())
s.enqueue(30)
s.enqueue(40)
print(s.first())
Y2xhc3MgcXVldWVhcnJheToKICAgIERlZmF1bHRDYXBhY2l0eT0xMAogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICNjcmVhdGUgYW4gZW1wdHkgbGlzdCBvZiBub25lcyAKICAgICAgICBzZWxmLmRhdGE9W05vbmVdKnNlbGYuRGVmYXVsdENhcGFjaXR5CiAgICAgICAgc2VsZi5zaXplPTAKICAgICAgICBzZWxmLmZyb250PTAKICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgIHJldHVybiBzZWxmLnNpemUKICAgIGRlZiBpc19lbXB0eShzZWxmKToKICAgICAgICByZXR1cm4gc2VsZi5zaXplPT0wCiAgICBkZWYgZmlyc3Qoc2VsZik6CiAgICAgICAgaWYgc2VsZi5pc19lbXB0eSgpOgogICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1F1ZXVlIElzIEVtcHR5JykKICAgICAgICByZXR1cm4gc2VsZi5kYXRhW3NlbGYuZnJvbnRdCiAgICBkZWYgZGVxdWV1ZShzZWxmKToKICAgICAgICBpZiBzZWxmLmlzX2VtcHR5KCk6CiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUXVldWUgSXMgRW1wdHknKQogICAgICAgIGFuc3dlcj1zZWxmLmRhdGFbc2VsZi5mcm9udF0KICAgICAgICBzZWxmLmRhdGFbc2VsZi5mcm9udF09Tm9uZQogICAgICAgIHNlbGYuZnJvbnQ9KHNlbGYuZnJvbnQrMSklbGVuKHNlbGYuZGF0YSkKICAgICAgICBzZWxmLnNpemUtPTEKICAgICAgICByZXR1cm4gYW5zd2VyCiAgICBkZWYgZW5xdWV1ZShzZWxmLGUpOgogICAgICAgIGlmIHNlbGYuc2l6ZT09c2VsZi5EZWZhdWx0Q2FwYWNpdHk6CiAgICAgICAgICAgIHNlbGYucmVzaXplKDIqbGVuKHNlbGYuZGF0YSkpICAgIAogICAgICAgIGF2YWw9KHNlbGYuZnJvbnQrc2VsZi5zaXplKSVsZW4oc2VsZi5kYXRhKSAgICAKICAgICAgICBzZWxmLmRhdGFbYXZhbF09ZQogICAgICAgIHNlbGYuc2l6ZSs9MQogICAgZGVmIHJlc2l6ZShzZWxmLGNhcCk6CiAgICAgICAgb2xkPXNlbGYuZGF0YQogICAgICAgICNidWlsZCBhIG5ldyBsaXN0IG9mIGFuZXcgc2l6ZSBoYXZlIG5vbmVzIAogICAgICAgIHNlbGYuZGF0YT1bTm9uZV0qY2FwCiAgICAgICAgd2Fsaz1zZWxmLmZyb250CiAgICAgICAgZm9yIGsgaW4gcmFuZ2Uoc2VsZi5zaXplKToKICAgICAgICAgICAgc2VsZi5kYXRhW2tdPW9sZFt3YWxrXQogICAgICAgICAgICB3YWxrPSgxK3dhbGspJWxlbihvbGQpCiAgICAgICAgc2VsZi5mcm9udD0wCgpzPXF1ZXVlYXJyYXkoKQojcy5kZXF1ZXVlKCkKcy5lbnF1ZXVlKDUpCnByaW50KHMuZmlyc3QoKSkKcy5lbnF1ZXVlKDMwKQpzLmVucXVldWUoNDApCnByaW50KHMuZmlyc3QoKSkK