20、数据结构_队列

# 队列
# 队列(Qu©ue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。
# 进行插入的一端称为队尾(rear),插入动作称为进队或入队
# 进行删除的一端称为队头(front),删除动作称为出队
# 队列的性质:先进先出(First--in,First--out)


# 列头 列尾
# 出队列 A1 A2 A3 A4 ...An 入队列

# 队列实现方式--环形队列
# 环形队列:当队尾指针front==Maxsize-1时,再前进一个位置就自动到0
# 队首指针前进1:front=(front+1)%MaxSize
# 队尾指针前进1:rear=(rear+1)%MaxSize
# 队空条件:rear==front
# 队满条件:(rear+1)%MaxSize==front

class Queue:
def __init__(self, size):
self.queue = [0 for _ in range(size)]
self.size = size
self.rear = 0 # 队尾指针 , 开始进入队列位置
self.front = 0 # 队首指针 , 开始出队列位置

def push(self, element): # 进入队列
if not self.is_filled(): # 当队列没满时
self.rear=(self.rear + 1)% self.size
self.queue[self.rear] = element
else:
return ('越界')

def pop(self): # 出队列
if not self.is_empty(): # 当队列不为空
self.front = (self.front + 1)% self.size
return self.queue[self.front]
else: # 队列为空
return IndexError('队列为空')
# 判断队列为空
def is_empty(self):
return self.rear == self.front

# 判断队满
def is_filled(self):
return (self.rear + 1)% self.size == self.front

q = Queue(5)
for i in range(3):
q.push(i)
print(q.push(3))
print(q.pop()) #出队列 ,先进先出:0
posted @ 2022-05-01 04:17  yu-ye  阅读(52)  评论(0)    收藏  举报