1. 棧的儲存方式是先進後出,具有push和pop的行為。佇列的儲存方式是先進先出(fifo)
2. 實現主要包括連續push、pop棧頂和展示棧內元素三個方法。
3. 連續push採用raw_input,以#作為結束標誌;展示元素以倒序依次展示的方式,用到了很重要的copy模組(import copy)
彈出棧頂直接採用列表的pop函式不帶引數的用法。
4. 根據命令不同呼叫不同的實現函式,參考了《python核心程式設計》的示例,cmds[choice](),其中cmds是乙個字典,不同的key對應不同的函式名。
5. 佇列的模擬基本和棧一樣,只是在彈出操作時,棧是彈出最後輸入的乙個元素,直接pop()呼叫即可,佇列則是彈出第乙個元素(遵循先進先出)呼叫pop(0)
**實現:
# global variables
stack =
def pu****():
'允許連續push多個元素進棧'
print '請輸入元素,以#結束'
element = raw_input()
while element is not '#':
element = raw_input()
def popit():
if len(stack)==0:
print '棧為空!'
return
else:
delelement = stack.pop()
print 'removed \'%s\' ' % delelement
print 'now stack is:'
viewstack()
def viewstack():
# stackview = stack
stackview = copy.copy(stack)
stackview.reverse()
for i in stackview:
print i
cmds =
# function definition
def simulatestack():
while true:
ill = """
push
popview
quit
enter your choice:"""
while true:
choice = raw_input(ill).strip().lower()
if choice not in 'uovq':
print 'invalid choice, please try again!'
else:
break
print 'you chose %s ' % choice
if choice =='q':
break
cmds[choice]()
python列表模擬棧 壓棧,出棧,查詢
root kl bin python3 author kl 列表模擬棧 壓棧,出棧,查詢 flist 定義棧 defpush it 定義壓棧 data input 資料 strip 提示使用者輸入資料,strip去掉兩邊空格 if data 判斷使用者輸入資料是否為空 else print 輸入內容...
資料結構和演算法 Python實現 03 棧和佇列
棧 stack 是乙個項的有序集合。新增項和移除項都發生在同一 端 這一端通常被稱為頂,另一端的頂部被稱為底。棧的底是有標誌性的,因為儲存在棧中更靠近底的項就是棧中儲存時間最長的項。最新新增的項在移除項時也會第乙個被移除。這種排序原則有時也稱為lifo法,也就是後進先出。棧很重要,因為它們可以用於反...
棧隊結構C 實現
順序棧與隊使用陣列儲存資料 include define max 10 using namespace std 迴圈鍊錶測試 void queue else 出隊depart queue cout endl int out while front rear 順序棧測試 void stack else...