堆栈 又称为栈或堆叠,堆栈是一个抽象数据类型(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()