栈 Stack
栈是一种特殊的线性表,只能在一端进行操作
往栈中添加元素的操作,叫做入栈,push
往栈中移除元素的操作,叫做出栈,pop,只能移除栈顶元素,也叫弹出栈顶元素
FILO的结构 First In Last Out
栈的接口设计:
isEmpty() 判断栈是否为空
size() 返回栈中元素数量
push() 入栈
pop() 出栈
peek() 获取栈顶元素
栈的应用:
浏览器的前进和后退:使用两个栈,一个用来存放当前访问及其之前的网址,一个用来存放当前访问之后的网址
软件的撤销(Undo)和恢复(Redo)
class Stack(object):
def __init__(self):
self.items = []
# 判断栈是否为空
def isEmpty(self):
return self.items == []
# 获取栈的长度
def size(self):
return len(self.items)
# 入栈
def push(self,item):
self.items.append(item)
# 出栈
def pop(self):
return self.items.pop()
# 获取栈顶元素
def peek(self):
return self.items[self.size() - 1]
if __name__ == '__main__' :
stack = Stack()
stack.push(11)
stack.push(22)
stack.push(33)
stack.push(44)
res = stack.peek()
print(res)
while stack.isEmpty() == False :
res = stack.pop()
print(res)
44
44
33
22
11