棧
1、什麼是棧(stack)呢?
作為一個吃貨,把“棧”想象是一摞迭在一起的大餅,在放餅的時候,需要自下而上一個一個放,拿餅的時候需要自上而下一個一個拿。
棧的數據結構:
① 先進後出,後進先出
② 只能在一端進行插入和刪除操作
2、 棧的應用場景
① 棧在表達式求值中的使用
3+4*5-6=?
分為 2 個棧,1 個存儲數字的棧,1 個 存儲運算符的棧。
表達式從左到右遍歷表達式,遇到數組就壓入操作數棧,遇到運算符,就將運算符棧的棧頂數據做比較。
如果運算符優先級高於運算符棧棧頂元素,就將運算符入棧。如果低於,就將棧頂元素取出,同事從操作數棧中取出兩個元素進行運算,並將運算結果壓入操作數棧。
② 棧在函數中的使用
● 當調用 greet("Python 大星"),計算機為該函數調用分配一塊內存
● 打印 hello, Python 大星! 再調用 greet2("Python大星")
計算機使用一個棧來表示這些內存塊,其中第二個內存塊位於第一個內存塊上面。打印 how are you,Python 大星? ,然後greet2調用返回,此時棧頂的內存塊被彈出。
● 打印 getting ready to say bye,再調用函數 bye
打印 ok bye!並從 bye 函數返回
● 回到函數 greet ,無其他事情要做,從函數 greet 返回
>>>
閱讀更多 Python大星 的文章