Python 數據結構之堆棧的實現

堆棧 又稱爲棧或堆疊,堆棧是一個抽象數據類型(ADT),在大多數編程語言中常用。

  • 堆棧的特性是 只能從一個口子出入數據,因此也被稱作 LIFO表示後進先出 後進先出。
  • 堆棧可通過數組,結構和鏈表來實現。堆棧可以是固定大小或它可動態調整。
# 堆棧基於Python語言的實現
'''
堆棧的基本方法:
push(value) 入棧 向堆棧內添加新的元素
pop() 出棧 將元素移出堆棧
peek() 得到堆棧頂部元素 但不刪除它
is_full() 檢查堆棧是否存滿 沒有長度限制的堆棧可不實現該方法
if_empty() 檢查堆棧是否爲空
len() 返回堆棧內元素個數
travel() 遍歷堆棧
'''

class Stack(object):
    """
    堆棧類
    """
    def __init__(self):
        """
        初始化
        """
        self.__stack = []

    def __len__(self):
        """
        返回堆棧長度
        """
        return len(self.__stack)

    def push(self, value):
        """
        入棧
        """
        self.__stack.insert(0, value)

    def pop(self):
        """
        出棧
        """
        return self.__stack.pop(0)
    
    def peek(self):
        """
        返回堆棧頂部元素
        """
        return self.__stack[0]

    def is_empty(self):
        """
        檢測堆棧是否爲空
        """
        return self.__stack == []

    def travel(self):
        """
        遍歷堆棧
        """
        for val in self.__stack:
            print(val)


if __name__ == '__main__':
    st = Stack()
    print(st.is_empty())
    st.push('a')
    st.push('b')
    st.push('c')
    st.push('d')
    print(st.pop())
    print(st.is_empty())
    print(st.peek())
    print(len(st))
    st.travel()
發佈了264 篇原創文章 · 獲贊 202 · 訪問量 110萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章