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 queueCMDs = {'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ì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選