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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章