Python 數(shù)據(jù)結(jié)構(gòu)之隊列的實現(xiàn)
更新時間:2017年01月22日 14:47:43 投稿:lqh
這篇文章主要介紹了Python 數(shù)據(jù)結(jié)構(gòu)之隊列的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
Python 隊列
Queue 隊列是一種先進先出(FIFO)的數(shù)據(jù)類型, 新的元素通過 入隊 的方式添加進 Queue 的末尾, 出隊 就是從 Queue 的頭部刪除元素.
用列表來做 Queue:
queue = [] # 初始化一個列表數(shù)據(jù)類型對象, 作為一個隊列
def enQ(): # 定義一個入棧方法
queue.append(raw_input('Enter New String: ').strip())
# 提示輸入一個入隊的 String 對象, 調(diào)用 Str.strip() 保證輸入的 String 值不包含多余的空格
def deQ(): # 定義一個出隊方法
if len(queue) == 0:
print "Cannot pop from an empty queue!"
else:
print 'Remove [', `queue.pop(0)`, ']'
# 使用反單引號(` `)來代替 repr(), 把 String 的值用引號擴起來, 而不僅顯示 String 的值
# queue.pop(0) 總是將在隊列中最前面的元素彈出
def viewQ(): # 定義一個顯示隊列中的內(nèi)容的方法
print queue
CMDs = {'u':enQ, 'o':deQ, 'v':viewQ}
# 定義一個 Dict 類型對象, 將字符映射到相應(yīng)的 function .可以通過輸入字符來執(zhí)行相應(yīng)的操作
def showmenu(): # 定義一個操作菜單提示方法
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 對象前后的多余空格
# Str.lower() 將多有輸入轉(zhuǎn)化為小寫, 便于后期的統(tǒng)一判斷
# 輸入 ^D(EOF, 產(chǎn)生一個 EOFError 異常)
# 輸入 ^C(中斷退出, 產(chǎn)生一個 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 中字符對應(yīng)的 functionName, 實現(xiàn)函數(shù)調(diào)用
if __name__ == '__main__':
showmenu()
隊列和堆棧的實現(xiàn)方式很相似, 區(qū)別在于隊列總是先彈出第一個元素而堆??偸窍葟棾鲎詈笠粋€元素.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Python實現(xiàn)發(fā)送警告通知到企業(yè)微信方法詳解
常見的報警方式有:郵件,電話,短信,微信。本文將介紹如何利用Python發(fā)送警告通知到企業(yè)微信,文中的示例代碼有一定的參考價值,感興趣的可以了解一下2022-01-01
Python內(nèi)建類型dict深入理解源碼學(xué)習(xí)
這篇文章主要為大家介紹了Python內(nèi)建類型dict的深入理解及源碼學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03
python使用pyinstaller將代碼打包為exe程序
這篇文章主要為大家詳細(xì)介紹了python如何使用pyinstaller將代碼打包為exe程序,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-11-11

