成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python數(shù)據(jù)結(jié)構(gòu)——隊列

wwolf / 2364人閱讀

摘要:隊列是一種先進(jìn)先出,的數(shù)據(jù)結(jié)構(gòu)。隊列的另外一項重要操作是讀取隊頭的元素。通常的操作定義一個空隊列,無參數(shù),返回值是空隊列。刪除隊列頭部的數(shù)據(jù)項,不需要參數(shù),返回值是被刪除的數(shù)據(jù),隊列本身有變化。

隊列是一種列表,不同的是隊列只能在隊尾插入元素,在隊首刪除元素。隊列用于存儲按順序排列的數(shù)據(jù),先進(jìn)先出,這點(diǎn)和棧不一樣,在棧中,最后入棧的元素反而被優(yōu)先處理。可以將隊列想象成在銀行前排隊的人群,排在最前面的人第一個辦理業(yè)務(wù),新來的人只能在后面排隊,直到輪到他們?yōu)橹埂?/p>

隊列是一種先進(jìn)先出(First-In-First-Out,F(xiàn)IFO)的數(shù)據(jù)結(jié)構(gòu)。隊列被用在很多地方,比如提交操作系統(tǒng)執(zhí)行的一系列進(jìn)程、打印任務(wù)池等,一些仿真系統(tǒng)用隊列來模擬銀行或雜貨店里排隊的顧客。

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

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

queue通常的操作:

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

隊列操作舉例:

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)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/44177.html

相關(guān)文章

  • Python -- Queue模塊

    摘要:默認(rèn)值為,指定為時代表可以阻塞,若同時指定,在超時時返回。當(dāng)消費(fèi)者線程調(diào)用意味著有消費(fèi)者取得任務(wù)并完成任務(wù),未完成的任務(wù)數(shù)就會減少。當(dāng)未完成的任務(wù)數(shù)降到,解除阻塞。 學(xué)習(xí)契機(jī) 最近的一個項目中在使用grpc時遇到一個問題,由于client端可多達(dá)200,每個端口每10s向grpc server發(fā)送一次請求,server端接受client的請求后根據(jù)request信息更新數(shù)據(jù)庫,再將數(shù)據(jù)...

    rubyshen 評論0 收藏0
  • rabbitmq中文教程python版 - 介紹

    摘要:每當(dāng)我們收到一條消息,這個回調(diào)函數(shù)就被皮卡庫調(diào)用。接下來,我們需要告訴這個特定的回調(diào)函數(shù)應(yīng)該從我們的隊列接收消息為了讓這個命令成功,我們必須確保我們想要訂閱的隊列存在。生產(chǎn)者計劃將在每次運(yùn)行后停止歡呼我們能夠通過發(fā)送我們的第一條消息。 源碼:https://github.com/ltoddy/rabbitmq-tutorial 介紹 RabbitMQ是一個消息代理:它接受和轉(zhuǎn)發(fā)消息。你...

    yimo 評論0 收藏0
  • Python數(shù)據(jù)結(jié)構(gòu)——雙端隊列

    摘要:在隊尾添加入一個元素,參數(shù)是數(shù)據(jù)項,無返回值。刪除隊首的元素,不需要參數(shù),返回值是被刪除的元素,隊列本身有變化。列表用于隨機(jī)訪問和定長數(shù)據(jù)的操作,包括切片,而雙端隊列適用于在兩端壓入或彈出元素,索引但不包括切片的效率可能低于列表。 雙端隊列(Deque),是一種類似于隊列的元素的有序集合。它擁有兩端,隊首和隊尾,并且元素保持在當(dāng)前的位置。雙端隊列的一個不同點(diǎn)就是,添加和刪除元素的位置不...

    cjie 評論0 收藏0
  • 線性結(jié)構(gòu) 隊列與棧

    摘要:線性結(jié)構(gòu)隊列與棧棧棧是一種遵循先進(jìn)后出原則的有序列表,新添加或待刪除的元素都保存在棧的一端,這一端被稱作為棧頂,另一端被稱作為棧底。將字符串的每個字符按順序亞入棧。 線性結(jié)構(gòu) 隊列與棧 棧 棧(Stack)是一種遵循先進(jìn)后出(LIFO)原則的有序列表,新添加或待刪除的元素都保存在棧的一端,這一端被稱作為棧頂,另一端被稱作為棧底。在棧里,新元素都靠近棧頂,舊元素都靠近棧底。 棧的操作 ...

    Turbo 評論0 收藏0
  • 線性結(jié)構(gòu) 隊列與棧

    摘要:線性結(jié)構(gòu)隊列與棧棧棧是一種遵循先進(jìn)后出原則的有序列表,新添加或待刪除的元素都保存在棧的一端,這一端被稱作為棧頂,另一端被稱作為棧底。將字符串的每個字符按順序亞入棧。 線性結(jié)構(gòu) 隊列與棧 棧 棧(Stack)是一種遵循先進(jìn)后出(LIFO)原則的有序列表,新添加或待刪除的元素都保存在棧的一端,這一端被稱作為棧頂,另一端被稱作為棧底。在棧里,新元素都靠近棧頂,舊元素都靠近棧底。 棧的操作 ...

    Turbo 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<