python 列表結構模擬棧和佇列

2021-09-26 08:35:32 字數 1442 閱讀 1653

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...