当前位置 博文首页 > 详解python数据结构之队列Queue

    详解python数据结构之队列Queue

    作者:jianshuilan_0613 时间:2021-06-09 18:30

    一、前言

    队列Queue是一种先进先出(FIFO,First In First Out)的线性表。允许一端进行插入(rear),对应的另一段进行删除(front)。

    本篇包含以下内容:
    (1)Queue的基本格式
    (2)入队列en_queue
    (3)删除数据函数 de_queue

    二、Queue的基本格式

    class Queue():
        def __init__(self,size):
            self.size = size 
            self.front = -1 #设置front初始值,每出队列一个数据就加 1
            self.rear = -1 #设置rear初始值,每入队列一个数据就加 1
            self.queue = [] #队列中数据的列表
            
        def display_queue(self): #打印队列数据
            print(self.queue)
    
    if __name__ == "__main__":
        queue = Queue(6) #设置队列queue的空间大小
        queue.display_queue() #调用打印函数
    

    三、入队列函数 en_queue

    class Queue():
        def __init__(self,size):
            self.size = size
            self.front = -1
            self.rear = -1
            self.queue = []
    
        def en_queue(self,data):
            if self.rear >= (self.size -1): #当入队列数据数量大于队列的size,提示queue is full!
                print("queue is full!")
                return 
            self.queue.append(data) #queue有空间就将数据入队列
            self.rear += 1 #每入队列一个数据就加 1
    
        def display_queue(self):
            print(self.queue)
    
    if __name__ == "__main__":
        queue = Queue(6)
        queue.en_queue(0)
        queue.en_queue(1)
        queue.en_queue(2)
        queue.en_queue(3)
        queue.en_queue(4)
        queue.en_queue(5)
        queue.en_queue(6) #queue空间是 6,入队列数据有 7 个,提示queue is full!
        queue.display_queue()
        
    

    执行结果:

    在这里插入图片描述

    四、删除数据函数 de_queue

    class Queue():
        def __init__(self,size):
            self.size = size
            self.front = -1
            self.rear = -1
            self.queue = []
        def en_queue(self,data):
            if self.rear >= (self.size -1):
                print("queue is full!")
                return 
            self.queue.append(data)
            self.rear += 1
        
        def de_queue(self):
            if  self.rear < 0: #rear表示队列中数据的多少,所以当它小于0时说明queue中没有数据
                print("queue is empty!")
                return
            self.front += 1 #当queue不为空时,每出队列一个数据 front就加 1
            self.queue.pop(0) #删除最先进来的数据
            self.rear -= 1 #删除一个数据,队列中的数据数量就要减 1
    
        def display_queue(self):
            print(self.queue)
    
    if __name__ == "__main__":
        queue = Queue(6)
        queue.en_queue(0)
        queue.en_queue(1)
        queue.en_queue(2)
        queue.en_queue(3)
        queue.en_queue(4)
        queue.en_queue(5)
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue()
        queue.de_queue()
        queue.display_queue() #队列中共有 6 个数据,删除 7 个数据,所以会提示queue is empty!
    

    执行结果:

    在这里插入图片描述

    js
    下一篇:没有了