Python全系列 教程
3567个小节阅读:5930.2k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
增加数据的索引: (队首索引+数据大小)%空间大小
下个队首索引: (队首索引+1)%空间大小
xxxxxxxxxx
class ArrayQueue:
def __init__(self,size:int):
self.items = [0]*size
self.head = 0
self.size = 0
def capacity(self) -> int:
'''
返回队列的容量
'''
return len(self.items)
def is_empty(self) -> bool:
'''
判断队列是否为空
'''
return self.size == 0
def peek(self) -> int:
'''
返回队首元素
'''
if self.is_empty():
raise Exception("Queue is empty")
return self.items[self.head]
def push(self,val:int):
'''
入队
'''
# 判断队列是否已满
if self.size == self.capacity():
raise Exception("Queue is full")
# 计算新元素的位置
index = (self.head + self.size) % self.capacity()
# 将新元素放入队尾
self.items[index] = val
# 队列元素个数加1
self.size += 1
def pop(self) ->int:
'''
出队
'''
data = self.peek()
# 更新队首元素的位置
self.head = (self.head + 1) % self.capacity()
# 更新队列元素个数
self.size -= 1
return data
def to_list(self):
'''
将队列转换为列表
'''
# 创建列表,用于保存队列元素
rs = [0]*self.size
head_index = self.head
# 依次遍历队列元素
for i in range(self.size):
index = head_index % self.capacity()
rs[i] = self.items[index]
head_index += 1
return rs
if __name__ == '__main__':
queue = ArrayQueue(5)
queue.push(1)
queue.push(2)
queue.push(3)
queue.push(4)
queue.push(5)
print(queue.to_list())
print(f'出队元素是:{queue.pop()}')
queue.push(6)
print(queue.to_list())