詳解python數據結構之隊列Queue

一、前言

隊列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!

執行結果:

在這裡插入圖片描述

到此這篇關於詳解python數據結構之隊列Queue的文章就介紹到這瞭,更多相關python隊列Queue內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: