首页 > 其他 > 详细

循环队列的实现

时间:2020-09-02 14:57:07      阅读:48      评论:0      收藏:0      [点我收藏+]
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!