python 顺序栈及基本操作
順序棧
順序棧,即用順序表實現棧存儲結構。通過前面的學習我們知道,使用棧存儲結構操作數據元素必須遵守 “先進后出” 的原則,本節就 “如何使用順序表模擬棧以及實現對棧中數據的基本操作(出棧和入棧)” 給大家做詳細介紹。
如果你仔細觀察順序表(底層實現是數組)和棧結構就會發現,它們存儲數據的方式高度相似,只不過棧對數據的存取過程有特殊的限制,而順序表沒有。
通過圖 1 和圖 2 的對比不難看出,使用順序表模擬棧結構很簡單,只需要將數據從 a 數組下標為 0 的位置依次存儲即可。
從數組下標為 0 的模擬棧存儲數據是常用的方法,從其他數組下標處存儲數據也完全可以,這里只是為了方便初學者理解。
了解了順序表模擬棧存儲數據后,接下來看如何模擬棧中元素出棧的操作。由于棧對存儲元素出棧的次序有"先進后出"的要求,如果想將圖 1 中存儲的元素 1 從棧中取出,需先將元素 4、元素 3 和元素 2 依次從棧中取出。
這里給出使用順序表模擬棧存儲結構常用的實現思路,即在順序表中設定一個實時指向棧頂元素的變量(一般命名為 top),top 初始值為 -1,表示棧中沒有存儲任何數據元素,及棧是"空棧"。一旦有數據元素進棧,則 top 就做 +1 操作;反之,如果數據元素出棧,top 就做 -1 操作。
順序棧元素入棧
因此,python語言實現代碼為:
順序元素的出棧
其實,top變量的設置對模擬數據的入棧操作沒有實際的幫助,他是為實現數據的出棧操作做準備的。
元素4和元素3全部出棧后,元素2才能出棧。代碼實現為:
總結
通過學習順序表模擬棧中數據入棧和出棧的操作,初學者完成了對順序棧的學習,這里給出順序棧對數據基本操作的python代碼:
class Stack:def __init__(self):self.stack = list()self.top = -1def push(self, val):self.stack.append(val)self.top += 1return self.stack[self.top]def pop(self):if self.stack == -1:return -1result = self.stack.pop()self.top -= 1return result總結
以上是生活随笔為你收集整理的python 顺序栈及基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 用队列实现栈
- 下一篇: python 链栈及基本操作