Python 數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的實(shí)現(xiàn)
Python 隊(duì)列
Queue 隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)類型, 新的元素通過(guò) 入隊(duì) 的方式添加進(jìn) Queue 的末尾, 出隊(duì) 就是從 Queue 的頭部刪除元素.
用列表來(lái)做 Queue:
queue = [] # 初始化一個(gè)列表數(shù)據(jù)類型對(duì)象, 作為一個(gè)隊(duì)列
def enQ(): # 定義一個(gè)入棧方法
queue.append(raw_input('Enter New String: ').strip())
# 提示輸入一個(gè)入隊(duì)的 String 對(duì)象, 調(diào)用 Str.strip() 保證輸入的 String 值不包含多余的空格
def deQ(): # 定義一個(gè)出隊(duì)方法
if len(queue) == 0:
print "Cannot pop from an empty queue!"
else:
print 'Remove [', `queue.pop(0)`, ']'
# 使用反單引號(hào)(` `)來(lái)代替 repr(), 把 String 的值用引號(hào)擴(kuò)起來(lái), 而不僅顯示 String 的值
# queue.pop(0) 總是將在隊(duì)列中最前面的元素彈出
def viewQ(): # 定義一個(gè)顯示隊(duì)列中的內(nèi)容的方法
print queue
CMDs = {'u':enQ, 'o':deQ, 'v':viewQ}
# 定義一個(gè) Dict 類型對(duì)象, 將字符映射到相應(yīng)的 function .可以通過(guò)輸入字符來(lái)執(zhí)行相應(yīng)的操作
def showmenu(): # 定義一個(gè)操作菜單提示方法
pr = """
(E)nqueue
(D)equeue
(V)iew
(Q)uit
Enter choice: """
while True:
while True:
try:
choice = raw_input(pr).strip()[0].lower()
# Str.strip() 去除 String 對(duì)象前后的多余空格
# Str.lower() 將多有輸入轉(zhuǎn)化為小寫, 便于后期的統(tǒng)一判斷
# 輸入 ^D(EOF, 產(chǎn)生一個(gè) EOFError 異常)
# 輸入 ^C(中斷退出, 產(chǎn)生一個(gè) keyboardInterrupt 異常)
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q'
print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print 'Invalid option, try again'
else:
break
if choice == 'q':
break
CMDs[choice]()
# 獲取 Dict 中字符對(duì)應(yīng)的 functionName, 實(shí)現(xiàn)函數(shù)調(diào)用
if __name__ == '__main__':
showmenu()
隊(duì)列和堆棧的實(shí)現(xiàn)方式很相似, 區(qū)別在于隊(duì)列總是先彈出第一個(gè)元素而堆??偸窍葟棾鲎詈笠粋€(gè)元素.
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Opencv圖像處理:如何判斷圖片里某個(gè)顏色值占的比例
這篇文章主要介紹了Opencv圖像處理:如何判斷圖片里某個(gè)顏色值占的比例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)發(fā)送警告通知到企業(yè)微信方法詳解
常見(jiàn)的報(bào)警方式有:郵件,電話,短信,微信。本文將介紹如何利用Python發(fā)送警告通知到企業(yè)微信,文中的示例代碼有一定的參考價(jià)值,感興趣的可以了解一下2022-01-01
在實(shí)驗(yàn)中需要自己構(gòu)造單獨(dú)的HTTP數(shù)據(jù)報(bào)文,而使用SOCK_STREAM進(jìn)行發(fā)送數(shù)據(jù)包,需要進(jìn)行完整的TCP交互。因此想使用原始套接字進(jìn)行編程,直接構(gòu)造數(shù)據(jù)包,并在IP層進(jìn)行發(fā)送,即采用SOCK_RAW進(jìn)行數(shù)據(jù)發(fā)送。使用SOCK_RAW的優(yōu)勢(shì)是,可以對(duì)數(shù)據(jù)包進(jìn)行完整的修改,可以處理IP層上的所有數(shù)據(jù)包,對(duì)各字段進(jìn)行修改,而不受UDP和TCP的限制。2014-02-02
Python內(nèi)建類型dict深入理解源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類型dict的深入理解及源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
python使用pyinstaller將代碼打包為exe程序
這篇文章主要為大家詳細(xì)介紹了python如何使用pyinstaller將代碼打包為exe程序,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-11-11
Python SQLAlchemy簡(jiǎn)介及基本用法
SQLAlchemy是一個(gè)基于Python實(shí)現(xiàn)的ORM對(duì)象關(guān)系映射框架,該框架建立在DB API之上,使用關(guān)系對(duì)象映射進(jìn)行數(shù)據(jù)庫(kù)操作,這篇文章主要介紹了SQLAlchemy簡(jiǎn)介以及基本使用,需要的朋友可以參考下2023-08-08
django中send_mail功能實(shí)現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于django中send_mail功能實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02

