zoukankan      html  css  js  c++  java
  • 循环队列的实现

    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()
  • 相关阅读:
    TIDB-存储
    MySQL的ACID
    MySQL MVCC
    MySQL 悲观锁、乐观锁、MVCC一
    MySQL写放大总结
    基于Linux上的wifi密码爆破
    Stack与Queue的实现(c++模板实现)
    vector 实现二维数组
    Linux下的静态链接与动态链接
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/hhsh/p/13601260.html
Copyright © 2011-2022 走看看