<pre name="code" class="python">class Queue:
initial_capacity=10
def __init__(self):
self.A=[0]*self.initial_capacity
self.capacity=self.initial_capacity
self.head=0
self.tail=0
def __repr__(self):
if self.tail>=self.head:
return ' '.join([str(self.A[i]) for i in range(self.head,self.tail)])
else:
return ' '.join([str(self.A[i] for i in range(self.head,self.capacity))])+\
' '.join([str(self.A[i] for i in range(0,self.tail))])
@property
def size(self):
return (self.tail+self.capacity-self.head)%self.capacity
@property
def empty(self):
return self.head==self.tail
@property
def full(self):
return (self.tail+1)%self.capacity==self.head
def enqueue(self,x):
if self.full:
self.expand()
self.A[self.tail]=x
self.tail=(self.tail+1)%self.capacity
def dequeue(self):
assert(self.empty==False)
x=self.A[self.head]
self.head=(self.head+1)%self.capacity
return x
def expand(self):
self.A.extend([0]*self.capacity)
if self.tail<self.head:
for i in range(0,self.tail):
self.A[self.capacity+i]=self.A[i]
self.tail=self.capacity+self.tail
self.capacity*=2
que=Queue()
for i in range(0,50):
que.enqueue(i)
print(que)
while(que.empty==False):
que.dequeue()
print(que)
chap10-queue
最新推荐文章于 2021-06-28 16:58:42 发布