python 隊(duì)列基本定義與使用方法【初始化、賦值、判斷等】
本文實(shí)例講述了python 隊(duì)列基本定義與使用方法。分享給大家供大家參考,具體如下:
隊(duì)列的特征是:先進(jìn)先出
應(yīng)用場(chǎng)景:消息通信、多進(jìn)程間的協(xié)同、多線程間的協(xié)同等
在隊(duì)列中需要設(shè)計(jì)的實(shí)例屬性:head節(jié)點(diǎn)、tail節(jié)點(diǎn)
需要設(shè)計(jì)的實(shí)例方法有兩個(gè):分別是入隊(duì)隊(duì)列enqueue和出隊(duì)隊(duì)列dequeue
# -*- coding:utf-8 -*- #! python3 class Node(object): #節(jié)點(diǎn),包括兩個(gè)屬性,一個(gè)是節(jié)點(diǎn)的值,一個(gè)是節(jié)點(diǎn)的下一個(gè)指向 def __init__(self,value): self.value = value #節(jié)點(diǎn)的值 self.next = None #節(jié)點(diǎn)的下一個(gè)指向 class Queue(object): #隊(duì)列這個(gè)類(lèi) def __init__(self): #初始化這個(gè)隊(duì)列 self.first = None #隊(duì)列的首尾指向的節(jié)點(diǎn)都是None,初始化 self.last = None def enter(self,n): packNode = Node(n) #創(chuàng)建Node新節(jié)點(diǎn)實(shí)例,值為n if self.first == None: #如果首指向?yàn)榭? self.first = packNode #將首指向的節(jié)點(diǎn)賦為傳進(jìn)來(lái)的節(jié)點(diǎn) self.last = self.first #并且將尾指向的節(jié)點(diǎn)賦為 else: self.last.next = packNode #如果隊(duì)列不為空,就將新的節(jié)點(diǎn)賦值到目前l(fā)ast的下一個(gè)位置 self.last = packNode #然后移動(dòng)last指向,將last指向到剛才新增的節(jié)點(diǎn) def quit(self): if self.first == None: return None else: tmp = self.first.value #如果隊(duì)列中存在值,則把隊(duì)列中第一個(gè)的值賦值給tmp self.first = self.first.next #將first的指向下一個(gè),變?yōu)閒irst指向 return tmp if __name__ == '__main__': print("------------隊(duì)列開(kāi)始--------") q = Queue() # n1 = Node(1) # n2 = Node(2) # n3 = Node(3) q.enter(1) q.enter(2) q.enter(3) print(q.quit()) print(q.quit()) print(q.quit()) # print(q)
運(yùn)行結(jié)果:
------------隊(duì)列開(kāi)始--------
1
2
3
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python算術(shù)運(yùn)算符實(shí)例詳解
- Python3單行定義多個(gè)變量或賦值方法
- python 解決動(dòng)態(tài)的定義變量名,并給其賦值的方法(大數(shù)據(jù)處理)
- python棧的基本定義與使用方法示例【初始化、賦值、入棧、出棧等】
- python入門(mén)教程之基本算術(shù)運(yùn)算符
- Python Spyder 調(diào)出縮進(jìn)對(duì)齊線的操作
- python 實(shí)現(xiàn)循環(huán)定義、賦值多個(gè)變量的操作
- Python?if?else語(yǔ)句對(duì)縮進(jìn)的要求
- python小例子-縮進(jìn)式編碼+算術(shù)運(yùn)算符+定義與賦值
相關(guān)文章
python3實(shí)現(xiàn)ftp服務(wù)功能(服務(wù)端 For Linux)
這篇文章主要介紹了python3實(shí)現(xiàn)ftp服務(wù)功能,服務(wù)端 For Linux,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Python?PDF轉(zhuǎn)化wolrd代碼的寫(xiě)法小結(jié)
將PDF文件轉(zhuǎn)換為Word文檔的過(guò)程通常需要使用一些外部庫(kù)來(lái)實(shí)現(xiàn),因?yàn)镻ython本身并不直接支持這種轉(zhuǎn)換,這篇文章主要介紹了Python?PDF轉(zhuǎn)化wolrd代碼的寫(xiě)法小結(jié),需要的朋友可以參考下2024-06-06python實(shí)現(xiàn)數(shù)獨(dú)算法實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)數(shù)獨(dú)算法,實(shí)例分析了Python數(shù)獨(dú)算法的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06基礎(chǔ)語(yǔ)音識(shí)別-食物語(yǔ)音識(shí)別baseline(CNN)
這篇文章主要介紹了一個(gè)基礎(chǔ)語(yǔ)音識(shí)別題目-食物語(yǔ)音識(shí)別baseline(CNN),代碼詳細(xì)嗎,對(duì)于想要學(xué)習(xí)語(yǔ)音識(shí)別的朋友可以參考下2021-04-04Django框架安裝及項(xiàng)目創(chuàng)建過(guò)程解析
這篇文章主要介紹了Django框架安裝及項(xiàng)目創(chuàng)建過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Python實(shí)現(xiàn)Tab自動(dòng)補(bǔ)全和歷史命令管理的方法
這篇文章主要介紹了Python實(shí)現(xiàn)Tab自動(dòng)補(bǔ)全和歷史命令管理的方法,實(shí)例分析了tab自動(dòng)補(bǔ)全的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03OpenCV-Python使用cv2實(shí)現(xiàn)傅里葉變換
在OpenCV中,我們通過(guò)cv2.dft()來(lái)實(shí)現(xiàn)傅里葉變換,使用cv2.idft()來(lái)實(shí)現(xiàn)逆傅里葉變換。本文就詳細(xì)的介紹一下這兩種用法,感興趣的可以了解一下2021-06-06