佇列也是一系列有順序的元素的集合,新元素的加入在佇列的一端,叫做「隊尾」(rear),已有元素的移除發生在佇列的另一端,叫做「隊首」(front),和棧不同的是,佇列只能在隊尾插入元素,在隊首刪除元素。最新加入的元素必須處於隊尾,在佇列停留時間最長的元素處於隊首。可以把佇列想象成在銀行前排隊的人群,排在最前面的人第乙個辦理業務,新來的人只能在後面排隊,直到輪到他們為止。這是一種先進先出(fifo,first-in-first-out)的資料結構。
佇列有兩種主要操作:向佇列中插入新元素和刪除佇列中的元素。插入操作也叫做入隊,刪除操作也叫做出隊。入隊操作在隊尾插入新元素,出隊操作刪除隊頭的元素。
佇列的另外一項重要操作是讀取隊頭的元素。這個操作叫做peek()。該操作返回隊頭元素,但不把它從佇列中刪除。除了讀取隊頭元素,我們還想知道佇列中儲存了多少元素,可以使用size()滿足該需求。
佇列queue的操作:
queue()定義乙個空佇列,無引數,返回值是空佇列。
enqueue(item)在佇列尾部加入乙個資料項,引數是資料項,無返回值。
dequeue()刪除佇列頭部的資料項,不需要引數,返回值是被刪除的資料,佇列本身有變化。
isempty()檢測佇列是否為空。無引數,返回布林值。
size()返回佇列資料項的數量。無引數,返回乙個整數。
classqueue:
'''模擬佇列
'''def
__init__
(self):
self.items =
defisempty(self):
return self.items ==
defenqueue(self,item):
self.items.insert(0,item)
defdequeue(self):
return
self.items.pop()
defsize(self):
return len(self.items)
>>> q =queue()>>>q.isempty()
true
>>> q.enqueue('
dog'
)>>> q.enqueue(4)
>>>q.isempty()
false
>>>q.size()
2>>>q.enqueue(true)
>>>q.size()
3>>>q.dequeue()
'dog
'>>>q.size()
2
Python 資料結構 佇列
queue 佇列是一種先進先出 fifo 的資料型別,新的元素通過 入隊 的方式新增進 queue 的末尾,出隊 就是從 queue 的頭部刪除元素.用列表來做 queue queue 初始化乙個列表資料型別物件,作為乙個佇列 defenq 定義乙個入棧方法 提示輸入乙個入隊的 string 物件,...
python資料結構 佇列
佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的 first in first out 的線性表,簡稱fifo。允許插入的一端為隊尾,允許刪除的一端為隊頭。佇列不允許在中間部位進行操作!假設佇列是q a1,a2,an 那麼a1就是隊頭元素,而an是隊...
資料結構 python 佇列
佇列 queue 是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列符合先進先出 fifo 的原則。複雜度分析 佇列屬於常見的一種線性結構...