1. 程式人生 > >給大家分享一篇 python_列表結構模擬棧和佇列

給大家分享一篇 python_列表結構模擬棧和佇列

  1. 棧的儲存方式是先進後出,具有push和pop的行為。佇列的儲存方式是先進先出(FIFO)

  2. 實現主要包括連續push、pop棧頂和展示棧內元素三個方法。

  3. 連續push採用raw_input,以#作為結束標誌;展示元素以倒序依次展示的方式,用到了很重要的copy模組(import copy)

python中,alist =[1],b =a,a和b都是對[1]這個物件的引用,b.append操作同樣修改了a,為了得到一個倒序棧的輸出但保留原棧需要用copy,即複製物件而不是引用);

彈出棧頂直接採用列表的pop函式不帶引數的用法。

  1. 根據命令不同調用不同的實現函式,參考了《python核心程式設計》的示例,CMDs

    choice,其中CMDs是一個字典,不同的key對應不同的函式名。

  2. 佇列的模擬基本和棧一樣,只是在彈出操作時,棧是彈出最後輸入的一個元素,直接pop()呼叫即可,佇列則是彈出第一個元素(遵循先進先出)呼叫pop(0)

程式碼實現:

# global variables
stack = []

def pushit():
    '允許連續push多個元素進棧'
    print '請輸入元素,以#結束'
    element = raw_input()
    while  element is not '#':
        stack.append(element)
        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 = {'u':pushit, 'o':popit, 'v':viewstack} # function definition def simulateStack(): while True: ill = """ pUsh pOp View 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]()

整理不易,如果覺得有所幫助,希望可以留下您的精彩言論再走。趕快為你們最喜歡的框架打Call吧。

大家如果需要Python的學習資料可以加我的Qun:834179111,小編整理了,從Python入門零基礎到專案實戰的資料。歡迎還沒有找到方向的小夥伴來學習。
 
本文轉自網路 如有侵權 請聯絡小編刪除