栈是一个线性表,是一个特殊的数组。特点:先进先出。
计算机系统结构中常用的存储数据的模块。常常和堆并列提及。
栈顶,栈底指针指向数据。
对于递归,则需要联系栈帧,和栈顶指针。
栈帧:一个函数调用部门信息存储
常用方法:
- Push : 将一个元素添加到栈顶
- Pop : 从栈顶移除一个元素
- IsEmpty : 检查堆栈是否为空
- IsFull : 检查堆栈是否已满
- Peek:获取顶部元素的值而不删除它
第一版
# 栈,先进先出
# 属性
# 栈顶,栈底
# top
# 方法
# pop
# push
# is_empty
# len
class Stack(object):
def __init__(self):
self._top = 0
self._stack = []
def len(self):
return len(self._stack)
def pop(self):
if not self.is_empty():
res = self._stack.pop()
self._top -= 1
return res
raise "empty stack ,can not pop"
def push(self, data):
self._stack.append(data)
self._top += 1
def is_empty(self):
return self.len() == 0
if __name__ == "__main__":
s = Stack()
s.push("a")
s.push("b")
print(s._stack)
print(s.pop())
s.pop()
s.pop()