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ì)本站的支持!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
