四 基本資料結構 佇列

2022-05-10 01:27:57 字數 1907 閱讀 2817

目錄

1.佇列

2.用python實現佇列

- 概念:佇列是項的有序結合,其中新增新項的一端稱為隊尾,移除項的一端稱為隊首。當乙個元素從隊尾進入佇列時,一直向隊首移動,直到它成為下乙個需要移除的元素為止。最近新增的元素必須在隊尾等待。集合中存活時間最長的元素在隊尾,這種排序成為 fifo,先進先出,也被稱為先到先得。

- 案例:佇列的最簡單的例子是我們平時不時會參與的列。排隊等待電影,在雜貨店的收營台等待,在自助餐廳排隊等待(這樣我們可以彈出托盤棧)。行為良好的線或佇列是有限制的,因為它只有一條路,只有一條出路。不能插隊,也不能離開。你只有等待了一定的時間才能到前面。

- 佇列的應用:我們的計算機實驗室有 30 臺計算機與一台印表機聯網。當學生想要列印時,他們的列印任務與正在等待的所有其他列印任務「一致」。第乙個進入的任務是先完成。如果你是最後乙個,你必須等待你前面的所有其他任務列印。我們將在後面更詳細地**這個有趣的例子。

除了列印佇列,作業系統使用多個不同的佇列來控制計算機內的程序。下一步做什麼的排程通常基於盡可能快地執行程式和盡可能多的服務使用者的排隊演算法。此外,當我們敲擊鍵盤時,有時螢幕上出現的字元會延遲。這是由於計算機在那一刻做其他工作。按鍵的內容被放置在類似佇列的緩衝器中,使得它們最終可以以正確的順序顯示在螢幕上。

二.用python實現佇列

-佇列的抽象資料型別定義:佇列的抽象資料型別應該由以下結構和操作定義。佇列操作如下:

queue() 建立乙個空的新佇列。 它不需要引數,並返回乙個空佇列。

enqueue(item) 將新項新增到隊尾。 它需要 item 作為引數,並不返回任何內容。

dequeue() 從隊首移除項。它不需要引數並返回 item。 佇列被修改。

isempty() 檢視佇列是否為空。它不需要引數,並返回布林值。

size() 返回佇列中的項數。它不需要引數,並返回乙個整數。

class

queue():

def__init__

(self):

self.items =

defenqueue(self,item):

self.items.insert(0,item)

defisempty(self):

return self.items ==

defdequeue(self):

ifself.isempty():

return

'佇列已經空了'

else

:

return

self.items.pop()

defsize(self):

return

len(self.items)

q =queue()

q.enqueue(1)

q.enqueue(2)

q.enqueue(3)

print

(q.dequeue())

print

(q.dequeue())

print

(q.dequeue())

print

(q.dequeue())

執行結果:12

3

佇列已經空了

>>>q.size()

3>>>q.isempty()

false

>>> q.enqueue(8.4)

>>>q.dequeue()

4>>>q.dequeue()

'dog

'>>>q.size()

2

view code

基本資料結構 佇列

佇列實現的是一種先進先出 first in,first out,fifio 的策略,佇列中的插入的操作稱為入隊 enqueue 佇列的刪除操作稱為出隊 dequeue 定義乙個陣列來實現佇列 public class queue public queue int n public boolean i...

基本資料結構 佇列(queue)

像棧一樣,佇列 queue 也是一種線性表,它的特性是先進先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊 push 要排在隊尾 rear 每次出隊 pop 的都是隊首 front 的人。如圖1,描述了乙個佇列模型。和棧一樣,佇列也有陣列實現和鍊錶實現兩種,兩種實現都能給出快速的o 1 執...

基本資料結構 鏈式佇列

佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 1 允許刪除的一端稱為隊頭 front 2 允許插入的一端稱為隊尾 rear 3 當佇列中沒有元素時稱為空佇列。4 佇列亦稱作先進先出 first in first out 的線性表,簡稱為fifo表。佇列的修改是依先進...