class MyQueue: """ 头指针front指向队头元素,尾指针rear指向队尾元素的下一个位置 牺牲一个空间位置用于区分队空队满 """ def __init__(self, capacity): self.capacity = capacity self.data = [None] * self.capacity self.front = self.rear = 0 def isEmpty(self): return self.front == self.rear def isFull(self): # 队尾下标+1 return (self.rear + 1) % self.capacity == self.front def enqueue(self, value): """ 入队 :param value: 要插入的值 :return: """ if self.isFull(): raise Exception(‘队列已经满了!‘) else: self.data[self.rear] = value self.rear = (self.rear + 1) % self.capacity def dequeue(self): """ 出队 :return: 被删除的元素 """ if self.isEmpty(): raise Exception(‘队列已经空了!‘) else: de_queue_element = self.data[self.front] self.front = (self.front + 1) % self.capacity return de_queue_element def output(self): i = self.front while i != self.rear: print(self.data[i]) i = (i + 1) % self.capacity m = MyQueue(7) m.enqueue(3) m.enqueue(2) m.enqueue(1) m.enqueue(7) m.enqueue(7) m.enqueue(7) m.dequeue() m.dequeue() m.dequeue() m.enqueue(66) m.enqueue(55) m.enqueue(44) m.output()
原文:https://www.cnblogs.com/hhsh/p/13601260.html