1. 程式人生 > >資料結構(四)python使用順序表實現棧

資料結構(四)python使用順序表實現棧

概念:

棧(stack),有些地方稱為堆疊,是一種容器,可存入資料元素、訪問元素、刪除元素,它的特點在於只能允許在容器的一端(稱為棧頂端指標,英語:top)進行加入資料(英語:push)和輸出資料(英語:pop)的運算。沒有了位置概念,保證任何時候可以訪問、刪除的元素都是此前最後存入的那個元素,按照後進先出(LIFO, Last In First Out)的原理運作。

注意:棧不是資料結構,只是某些資料結構在用的時候具有棧的特點,可以稱之為棧,可以理解為是一個容器,即、滿足先進先出的存取方式的容器。

應用場景:

    函式呼叫

    如:函式A呼叫B,B呼叫C,最後呼叫的C,但執行時是C先執行,返回,然後B執行,返回,A再執行,返回;在呼叫當前函式時會將區域性變數和引數入棧,函式返回時會銷燬當前函式的區域性變數和引數,出棧。

python使用順序表實現棧:

    class Stack(object):
    def __init__(self):
        self.stack = []

    def push(self, item):
        """新增一個新的元素item到棧頂"""
        self.stack.append(item)

    def pop(self):
        """彈出棧頂元素"""
        return self.stack.pop()
    
    def is_empty(self):
        """判斷棧是否為空"""
        return self.stack == []
    
    def peek(self):
        """返回棧頂元素"""
        if self.is_empty():
            return None

        return self.stack[-1]

    def size(self):
        """返回棧的元素個數"""
        return len(self.stack)


if __name__ == '__main__':
    st = Stack()
    st.push(1)
    st.push(2)
    st.push(3)
    st.push(4)
    print(st.pop())
    print(st.peek())
    print(st.pop())

如有錯誤,請指出。