Python 隊列
Queue 隊列是一種先進先出(FIFO)的數據類型, 新的元素通過 入隊 的方式添加進 Queue 的末尾, 出隊 就是從 Queue 的頭部刪除元素.
用列表來做 Queue:
queue = [] # 初始化一個列表數據類型對象, 作為一個隊列
def enQ(): # 定義一個入棧方法
queue.append(raw_input('Enter New String: ').strip())
# 提示輸入一個入隊的 String 對象, 調用 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(): # 定義一個顯示隊列中的內容的方法
print queue
CMDs = {'u':enQ, 'o':deQ, 'v':viewQ}
# 定義一個 Dict 類型對象, 將字符映射到相應的 function .可以通過輸入字符來執行相應的操作
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() 將多有輸入轉化為小寫, 便于后期的統一判斷
# 輸入 ^D(EOF, 產生一個 EOFError 異常)
# 輸入 ^C(中斷退出, 產生一個 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 中字符對應的 functionName, 實現函數調用
if __name__ == '__main__':
showmenu()
隊列和堆棧的實現方式很相似, 區別在于隊列總是先彈出第一個元素而堆棧總是先彈出最后一個元素.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

