前言
今天要來跟你們講一個與stack有點相關的線性結構
圖示
原理
之前教的Stack是先進後出,但Queue的話就是先進先出,它實際上就是排隊的意思,enqueue就是輸入,dequeue輸出,那該如何用Queue來寫程式呢?那麼直接開始吧。
程式
class Queue():
'''Queue佇列'''
def __init__(self):
self.queue = []
def enqueue(self, data):
'''data插入佇列'''
self.queue.insert(0, data)def dequeue(self):
'''讀取佇列'''
if len(self.queue):
return self.queue.pop()
return"佇列是空的"
def size(self):
'''回傳佇列長度'''
return len(self.queue)fruits = ['Grape', 'Mango','Apple']
q = Queue()
for fruit in fruits:
q.enqueue(fruits)
print('將 %s 水果加入佇列' % fruit)print("佇列長度",q.size())
print("讀取佇列:", q.dequeue())
print("讀取佇列:", q.dequeue())
print("讀取佇列:", q.dequeue())
print("讀取佇列:", q.dequeue())
這邊就是大概的程式,我們就先一步一步開始講。
前置設定
一開始我們先創造一個類別(class),來實現佇列的功能。
(以下講解以每一個函式來解釋)
__init__的部分其實就是的部分其實就是建立一個空的清單,這個空的清單是拿來準備進行queue的容器。
enqueue可以看上方的圖示就可知道說是指把fruit輸入進去。
dequeue也就跟enqueue是相反的,他是把某一個fruit給輸出出去
最後的size也就是檢查裡面有多少個fruit並回報。
執行
接下來就是執行的部分,首先我們先設三個水果,分別是葡萄、芒果、蘋果,接下來我們把他列一個清單,「並且按照順序,將grape水果加入佇列,將芒果加入⋯⋯」以此類推,執行結果如下:
接下來就是讀取資料的時候了,首先先呼叫清單並且縣市序列的長度為多少(q.size),那麼到最後開示進行計算開始讀取序列,這樣就算大功告成。
總結
根據上一次的stack,跟今天的queue,我們了幾=解到queue我們可以了解到是先進先出(first in first out),那麼還沒看過上一篇的Stack,也可以去看看喔,就這樣,掰掰。