class CircleQueue(object):def __init__(self,max=50):# 队列最大容量self.max = max# 存储队列元素的数组self.data = [None for i in range(self.max)]# 队首指针self.front = 0# 队尾指针self.rear = 0def empty(self):''':Desc判队空:return:如果队为空,返回True如果队不为空,返回False'''return self.front == self.reardef push(self,val):''':Desc入队:paramval:待入队关键字'''# 如果队列满了,抛出异常if (self.rear + 1) % self.max == self.front:raise IndexError("队列为满")# 在队尾插入新的关键字self.data[self.rear] = val# 修改队尾指针self.rear = (self.rear + 1) % self.maxdef pop(self):''':Desc将队首元素出队'''# 如果队列为空,抛出异常if self.empty():raise IndexError("队列为空")# 队列不为空,获取队首元素cur = self.data[self.front]# 修改队首指针,指向下一个位置self.front = (self.front + 1) % self.max# 返回原队首元素return curdef peek(self):''':Desc获取队首元素:return:返回队首元素'''# 如果队列为空,抛出异常if self.empty():raise IndexError("队列为空")# 返回队首元素return self.data[self.front]def notEmpty(self):""":Desc判断队列是否已满"""return (self.rear + 1) % self.max == self.frontdef traversal(self):""":Desc遍历"""if self.empty():raise IndexError("队列为空")if self.front < self.rear:curindex = self.frontwhile curindex < self.rear:print(self.data[curindex],end=" ")curindex += 1else:curindex = self.frontwhile curindex < self.max:print(self.data[curindex],end=" ")curindex += 1curindex =0while curindex < self.rear:print(self.data[curindex],end=" ")curindex += 1print()def top(self):""":Desc返回队首元素"""if not self.empty():return self.data[self.front]returndef length(self):""":Desc获取队列长度"""size = 0for i in range(self.front,self.rear):size += 1return size
if __name__ == '__main__':q=CircleQueue(10)x=int(input("请用户输入想要几次:"))for i in range(1,x+1):if i==1:q.push(0)q.push(1)q.push(0)else:a=[]z=[]while not q.empty():a.append(q.pop())z.append(0)for i in range(1,len(a)):z.append(a[i]+a[i-1])z.append(0)for i in z:q.push(i)q.traversal()
实现以下效果