新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)Python教程:Python能實(shí)現(xiàn)棧的結(jié)構(gòu)嗎
棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。在python中可使用列表進(jìn)行實(shí)現(xiàn)。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了懷寧免費(fèi)建站歡迎大家使用!
什么是棧?
棧(stack)又名堆棧,它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。向一個(gè)棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱作出?;蛲藯#前褩m斣貏h除掉,使其相鄰的元素成為新的棧頂元素。
如何實(shí)現(xiàn)?
在Python中使用列表來(lái)實(shí)現(xiàn):
#!/usr/bin/env python
#定義一個(gè)列表來(lái)模擬棧
stack = []
#進(jìn)棧,調(diào)用列表的append()函數(shù)加到列表的末尾,strip()沒(méi)有參數(shù)是去掉首尾的空格
def pushit():
stack.append(raw_input('Enter new string: ').strip())
#出棧,用到了pop()函數(shù)
def popit():
if len(stack) == 0:
print 'Cannot pop from an empty stack!'
else:
print 'Removed [', stack.pop(), ']'
#編歷棧
def viewstack():
print stack
#CMDs是字典的使用
CMDs = {'u': pushit, 'o': popit, 'v': viewstack}
#pr為提示字符
def showmenu():
pr = """
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice: """
while True:
while True:
try:
#先用strip()去掉空格,再把第一個(gè)字符轉(zhuǎn)換成小寫(xiě)的
choice = raw_input(pr).strip()[0].lower()
except (EOFError, KeyboardInterrupt, IndexError):
choice = 'q'
print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print 'Invalid option, try again'
else:
break
#CMDs[]根據(jù)輸入的choice從字典中對(duì)應(yīng)相應(yīng)的value,比如說(shuō)輸入u,從字典中得到value為pushit,執(zhí)行pushit()進(jìn)棧操作
if choice == 'q':
break
CMDs[choice]()
#判斷是否是從本文件進(jìn)入,而不是被調(diào)用
if __name__ == '__main__':
showmenu()
標(biāo)題名稱:創(chuàng)新互聯(lián)Python教程:Python能實(shí)現(xiàn)棧的結(jié)構(gòu)嗎
分享鏈接:http://m.fisionsoft.com.cn/article/dhoohjc.html


咨詢
建站咨詢
