Python數據結構——隊列

隊列是一種列表,不一樣的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列用於存儲按順序排列的數據,先進先出,這點和棧不同,在棧中,最後入棧的元素反而被優先處理。能夠將隊列想象成在銀行前排隊的人羣,排在最前面的人第一個辦理業務,新來的人只能在後面排隊,直到輪到他們爲止。數據結構

隊列是一種先進先出(First-In-First-Out,FIFO)的數據結構。隊列被用在不少地方,好比提交操做系統執行的一系列進程、打印任務池等,一些仿真系統用隊列來模擬銀行或雜貨店裏排隊的顧客。測試

圖片描述

隊列的兩種主要操做是:向隊列中插入新元素和刪除隊列中的元素。插入操做也叫作入隊,刪除操做也叫作出隊。入隊操做在隊尾插入新元素,出隊操做刪除隊頭的元素。spa

隊列的另一項重要操做是讀取隊頭的元素。這個操做叫作peek()。該操做返回隊頭元素,但不把它從隊列中刪除。除了讀取隊頭元素,咱們還想知道隊列中存儲了多少元素,能夠使用size()知足該需求。操作系統

queue一般的操做:code

Queue()        定義一個空隊列,無參數,返回值是空隊列。
enqueue(item)  在隊列尾部加入一個數據項,參數是數據項,無返回值。
dequeue()      刪除隊列頭部的數據項,不須要參數,返回值是被刪除的數據,隊列自己有變化。
isEmpty()      檢測隊列是否爲空。無參數,返回布爾值。
size()         返回隊列數據項的數量。無參數,返回一個整數。

隊列操做舉例:隊列

Queue Operation Queue Contents Return Value
q.isEmpty() [] True
q.enqueue(4) [4]
q.enqueue('dog') ['dog',4]
q.enqueue(True) [True,'dog',4]
q.size() [True,'dog',4] 3
q.isEmpty() [True,'dog',4] False
q.enqueue(8.4) [8.4,True,'dog',4]
q.dequeue() [8.4,True,'dog'] 4
q.dequeue() [8.4,True] 'dog'
q.size() [8.4,True] 2

Queue 類模擬:進程

class Queue:
    """模擬隊列"""
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def enqueue(self, item):
        self.items.insert(0,item)

    def dequeue(self):
        return self.items.pop()

    def size(self):
        return len(self.items)

如下是測試代碼:圖片

q=Queue()
q.isEmpty()

q.enqueue('dog')
q.enqueue(4)
q=Queue()
q.isEmpty()

q.enqueue(4)
q.enqueue('dog')
q.enqueue(True)
相關文章
相關標籤/搜索