Python-队列

注:当front == rear时,判断为空队列!

 

class Queue:
    def __init__(self, size=100):
        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:
            raise IndexError("Queue is filled")

    def pop(self):
        if not self.is_empty():
            self.front = (self.front + 1) % self.size
            return self.queue[self.front]
        else:
            raise IndexError("Queue is empty")

    # 判断队空
    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(4):
    q.push(i)
    
print(q.pop())
q.push(4)
print(q.queue)

 

队列的内置模块:

from collections import deque

q = deque([1,2,3,4,5], 5)  # 创建队列,不传参数默认为空
# 参数1 :初始队列
# 参数2: 队列的最大长度,如果超过则队首自动出队
q.append(6)  # 队尾进队
print(q.popleft())  # 队首出队

# 用于双向队列
print(q)
q.appendleft(1)  # 队首进队
print(q)
q.pop()  # 队尾出队
print(q)

 

posted on 2023-02-01 14:56  夜黎i  阅读(42)  评论(0)    收藏  举报

导航