Python關於棧的基礎理解(摘自Python程序設計基礎)

棧設計必要性解釋:
(1)棧是一種“後進先出”(Last In First Out,LIFO)或“先進後出”(First In Last Out,FILO)的數據結構。
(2)Python列表本身就可以實現棧結構的基本操作。例如,列表對象的append()方法是在列表尾部追加元素,類似於入棧操作;pop()方法默認是彈出並返回列表最後一個元素,類似於出棧操作。
(3)但是直接使用Python列表對象模擬棧操作並不是很方便,例如,當列表爲空時,若再執行pop()出棧操作,則會拋出一個很不友好的異常,另外,也無法限制棧的大小。
(4) 所以需要編寫一個棧的代碼來方便實現棧操作,運用到面向對象思想。

代碼實現:

class Stack:
    def __init__(self,size=10):   # __init__爲實例方法且內部成員爲私有成員,self代表將來要創建的對象的本身
        self._content=[]   # 定義實例屬性,"_"代表content爲私有成員
        self._size=size
    def empty(self):   # 定義列表,內部成員爲共有成員,對象可以調用
        self._content=[]
        
    def isEmpty(self):   # 判斷對象是否爲空
        if not self._content:
            return True
        else:
            return False
            
    def setSize(self,size):   # 定義大小
        self._size=size
        
    def isFull(self):   # 判斷列表是否溢出
        if len(self._content)==self._size:
            return True
        else:
            return False
            
    def push(self,v):   # 入棧操作
        if len(self._content)<self._size:
            self._content.append(v)
        else:
            print("Stack Full!")
            
    def pop(self):   # 出棧操作
        if self._content:
            return self._content.pop()
        else:
            print("Stack is empty!")
            
    def show(self):   # 顯示棧
        print(self._content)
        
    def showRemainderSpace(self):   # 統計棧中空白空間
        print("Stack can still PUSH",self._size-len(self._content),"elements.")

x=Stack()   #實例化對象
x.push(1)   # 對象調用類實例方法  入棧
x.push(2)
x.show()
x.pop()   # 出棧
x.show()  
x.showRemainderSpace()   
print(x.isEmpty())
print(x.isFull())

實驗結果:
在這裏插入圖片描述
以上內容均摘自董付國版《Python程序設計基礎》。

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