Python 數(shù)據(jù)結(jié)構(gòu)之堆棧實(shí)例代碼
Python 堆棧
堆棧是一個(gè)后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu). 堆棧這個(gè)數(shù)據(jù)結(jié)構(gòu)可以用于處理大部分具有后進(jìn)先出的特性的程序流 .
在堆棧中, push 和 pop 是常用術(shù)語:
- push: 意思是把一個(gè)對象入棧.
- pop: 意思是把一個(gè)對象出棧.
下面是一個(gè)由 Python 實(shí)現(xiàn)的簡單的堆棧結(jié)構(gòu):
stack = [] # 初始化一個(gè)列表數(shù)據(jù)類型對象, 作為一個(gè)棧 def pushit(): # 定義一個(gè)入棧方法 stack.append(raw_input('Enter New String: ').strip()) # 提示輸入一個(gè)入棧的 String 對象, 調(diào)用 Str.strip() 保證輸入的 String 值不包含多余的空格 def popit(): # 定義一個(gè)出棧方法 if len(stack) == 0: print "Cannot pop from an empty stack!" else: print 'Remove [', `stack.pop()`, ']' # 使用反單引號(hào)(` `)來代替 repr(), 把 String 的值用引號(hào)擴(kuò)起來, 而不僅顯示 String 的值 def viewstack(): # 定義一個(gè)顯示堆棧中的內(nèi)容的方法 print stack CMDs = {'u':pushit, 'o':popit, 'v':viewstack} # 定義一個(gè) Dict 類型對象, 將字符映射到相應(yīng)的 function .可以通過輸入字符來執(zhí)行相應(yīng)的操作 def showmenu(): # 定義一個(gè)操作菜單提示方法 pr = """ p(U)sh p(O)p (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)生一個(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 中字符對應(yīng)的 functionName, 實(shí)現(xiàn)函數(shù)調(diào)用 if __name__ == '__main__': showmenu()
NOTE: 在堆棧數(shù)據(jù)結(jié)構(gòu)中, 主要應(yīng)用了 List 數(shù)據(jù)類型對象的 容器 和 可變 等特性, 表現(xiàn)在 List.append() 和 List.pop() 這兩個(gè)列表類型內(nèi)建函數(shù)的調(diào)用.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式
本文主要介紹了詳解解Django 多對多表關(guān)系的三種創(chuàng)建方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08python開發(fā)準(zhǔn)備工作之配置虛擬環(huán)境(非常重要)
這篇文章主要介紹了python開發(fā)準(zhǔn)備工作之配置虛擬環(huán)境(非常重要),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02Python實(shí)現(xiàn)PS濾鏡特效Marble Filter玻璃條紋扭曲效果示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS濾鏡特效Marble Filter玻璃條紋扭曲效果,涉及Python基于skimage庫實(shí)現(xiàn)圖形條紋扭曲效果的相關(guān)操作技巧,需要的朋友可以參考下2018-01-0111個(gè)案例講透Python函數(shù)參數(shù)小結(jié)
本文主要介紹了11個(gè)案例講透Python函數(shù)參數(shù)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python PyQt5運(yùn)行程序把輸出信息展示到GUI圖形界面上
這篇文章主要介紹了Python PyQt5運(yùn)行程序把輸出信息展示到GUI圖形界面上,本文通過截圖實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Python之Anaconda啟動(dòng)過程中的異常錯(cuò)誤問題及解決
這篇文章主要介紹了Python之Anaconda啟動(dòng)過程中的異常錯(cuò)誤問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09