数组队列

class Aaa:

(定义一个类,也就是我们的数组)

def __init__(self, size=32):
self._size = size (最大容器容量)
self._items = [None]*size (通过列表,生成容器)

def __getitem__(self, index):
return self._items[index]

def __setitem__(self, key, value):
self._items[key] = value

def __len__(self):
return len(self._items)

def clear(self, value=None):
for index in self._items:
self._items[index] = value

def __iter__(self):
for i in self._items:
yield i

class queue:

(定义一个队列)
def __init__(self,maxsize=32):
self.bag=Aaa(maxsize) (这里用前面定义好的数组存储数据,传入数组的大小)
self.tail=0 (尾长度)
self.head=0  (首长度)

def push(self,value):

(添加值的方法)
self.bag[self.tail % len(self.bag)]=value  (这里用到了一个取模的思想)
self.tail+=1

def pop(self):

(从尾部去除值的方法)
value=self.bag[self.head%len(self.bag)]  (这里用到了一个取模的思想)
self.head+=1
return value

def __len__(self):
return self.tail-self.head  (返回尾长度减去首长度,就得到了队列的长度)

原文地址:https://www.cnblogs.com/xuxingping/p/10946301.html