Python數據結構——棧

棧是一種特殊的列表,棧內的元素只能經過列表的一端訪問,這一端稱爲棧頂。棧被稱爲一種後入先出(LIFO,last-in-first-out)的數據結構。python

因爲棧具備後入先出的特色,因此任何不在棧頂的元素都沒法訪問。爲了獲得棧底的元素,必須先拿掉上面的元素。數據結構

對棧的兩種主要操做是將一個元素壓入棧和將一個元素彈出棧。入棧使用push()方法,出棧使用pop()方法。下圖演示了入棧和出棧的過程。app

另外一個經常使用的操做是預覽棧頂的元素。pop()方法雖然能夠訪問棧頂的元素,可是調用該方法後,棧頂元素也從棧中被永久性地刪除了。peek()方法則只返回棧頂元素,而不刪除它。對象

爲了記錄棧頂元素的位置,同時也爲了標記哪裏能夠加入新元素,咱們使用變量top,當向棧內壓入元素時,該變量增大;從棧內彈出元素時,該變量減少。blog

push()、pop()和peek()是棧的3個主要方法,可是棧還有其餘方法和屬性。it

stack一般的操做:ast

Stack()    創建一個空的棧對象
push()     把一個元素添加到棧的最頂層
pop()      刪除棧最頂層的元素,並返回這個元素
peek()     返回最頂層的元素,並不刪除它
isEmpty()  判斷棧是否爲空
size()     返回棧中元素的個數

 簡單案例以及操做結果:class

這裏使用python的list對象模擬棧的實現:變量

class Stack: 
    """模擬棧""" 
    def __init__(self): 
        self.items = [] 

    def isEmpty(self): 
        return len(self.items)==0  

    def push(self, item): 
        self.items.append(item) 

    def pop(self): 
        return self.items.pop()  

    def peek(self): 
        if not self.isEmpty(): 
            return self.items[len(self.items)-1] 

    def size(self): 
        return len(self.items) 

 建立一個棧對象,並加入操做方法:方法

s=Stack() 
print(s.isEmpty()) 
s.push(4) 
s.push('dog') 
print(s.peek()) 
s.push(True) 
print(s.size()) 
print(s.isEmpty()) 
s.push(8.4) 
print(s.pop()) 
print(s.pop()) 
print(s.size()) 
相關文章
相關標籤/搜索