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ù)語(yǔ):
- push: 意思是把一個(gè)對(duì)象入棧.
- pop: 意思是把一個(gè)對(duì)象出棧.
下面是一個(gè)由 Python 實(shí)現(xiàn)的簡(jiǎn)單的堆棧結(jié)構(gòu):
stack = [] # 初始化一個(gè)列表數(shù)據(jù)類型對(duì)象, 作為一個(gè)棧
def pushit(): # 定義一個(gè)入棧方法
stack.append(raw_input('Enter New String: ').strip())
# 提示輸入一個(gè)入棧的 String 對(duì)象, 調(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)(` `)來(lái)代替 repr(), 把 String 的值用引號(hào)擴(kuò)起來(lái), 而不僅顯示 String 的值
def viewstack(): # 定義一個(gè)顯示堆棧中的內(nèi)容的方法
print stack
CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定義一個(gè) Dict 類型對(duì)象, 將字符映射到相應(yīng)的 function .可以通過(guò)輸入字符來(lái)執(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 對(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()
NOTE: 在堆棧數(shù)據(jù)結(jié)構(gòu)中, 主要應(yīng)用了 List 數(shù)據(jù)類型對(duì)象的 容器 和 可變 等特性, 表現(xiàn)在 List.append() 和 List.pop() 這兩個(gè)列表類型內(nèi)建函數(shù)的調(diào)用.
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
python 初始化一個(gè)定長(zhǎng)的數(shù)組實(shí)例
今天小編就為大家分享一篇python 初始化一個(gè)定長(zhǎng)的數(shù)組實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python+OpenCV實(shí)現(xiàn)圖像識(shí)別替換功能詳解
OpenCV-Python是一個(gè)Python庫(kù),旨在解決計(jì)算機(jī)視覺(jué)問(wèn)題。本文將利用Python+OpenCV實(shí)現(xiàn)圖像識(shí)別替換功能,感興趣的小伙伴可以動(dòng)手嘗試一下2022-07-07
python如何實(shí)現(xiàn)MK突變檢驗(yàn)方法,代碼復(fù)制修改可用
這篇文章主要介紹了python如何實(shí)現(xiàn)MK突變檢驗(yàn)方法,代碼復(fù)制修改可用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python實(shí)現(xiàn)爬取亞馬遜數(shù)據(jù)并打印出Excel文件操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)爬取亞馬遜數(shù)據(jù)并打印出Excel文件操作,結(jié)合實(shí)例形式分析了Python針對(duì)亞馬遜圖書(shū)數(shù)據(jù)的爬取操作,以及數(shù)據(jù)打印輸出Excel相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
python中l(wèi)ogging包的使用總結(jié)
本篇文章給大家詳細(xì)講述了python中l(wèi)ogging包的使用的相關(guān)知識(shí)點(diǎn)以及原理分析,有興趣的朋友可以參考學(xué)習(xí)下。2018-02-02
教你怎么用python實(shí)現(xiàn)字符串轉(zhuǎn)日期
今天教各位小伙伴怎么用python實(shí)現(xiàn)字符串轉(zhuǎn)日期,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下2021-05-05

