Python 數據結構(棧)

 

       可以看到,如果把棧底位置的下標標註爲-1, 那麼數據1所在的位置下標爲0,數據2所在的位置下標爲1,;以此類推,數據n所在的位置下標爲n-1。實際上,數據1~數據n的存儲形式就是列表,只不過這種列表裏面的數據操作是受限制的,只能對列表中的最後一個元素進行操作。

 

Python代碼實現判斷棧空,判斷棧滿,出棧,入棧操作:

class Stack():
    def __init__(self,size):
        self.data = ["null" for i in range(0,size)] # 初始化長度爲(Size)的列表, 賦值給data
        self.size = size                            # 對棧的大小進行初始化
        self.top = -1                               # 對棧頂指針進行初始化

    def Empty(self):
        if self.top==-1:
            return True
        else:
            return False
        
    def Full(self):
        if self.top==self.size - 1:
            return True
        else:
            return False
        
    def push(self, content):
        if self.Full():
            print("棧已滿,不允許入棧!")
        else:
            self.top = self.top + 1
            self.data[self.top] = content
        
    def out(self):
        if self.Empty():
            print("棧已空, 不允許出棧!")
        else:
            print(self.data[self.top])
            self.data[self.top] = "null"
            self.top = self.top - 1
            
s = Stack(4)
s.push("Apple")
s.push("Pear")
s.push("Banana")
s.push("Peach")
s.push("Hamimelon")
s.out()
s.out()

 輸出:

棧已滿,不允許入棧!
Peach
Banana

那麼,棧這種數據結構在什麼時候才能夠應用到呢?

舉例子:

       事實上,凡是先進後出的業務邏輯執行流程都可以使用到這種數據結構。不妨假定這樣的情景:現在有4個應用程序 A、B、C、D,系統同時最多隻能執行一個應用程序,具體執行哪個應用程序由使用者進行選擇,此時希望,如果前一個應用程序已經執行,而使用者又開啓了一個新的應用程序,系統優先執行新開啓的程序,而原程序進入掛起狀態,當新開啓的程序執行完畢之後,再依次激活原程序進行執行。也就是說,這裏程序的執行方案是,新開啓的程序優先於已開啓的程序執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章