栈结构:stack
生活例子:电梯
栈的特点:先进后出(FirstInLastOut,简称FILO)
生活例子:电梯
栈的特点:先进后出(FirstInLastOut,简称FILO)
栈的基本用法:push(入栈:添加元素) pop(出栈:删除元素) size(返回栈的大小) is_empty(判断栈是否为空) empty(清空栈) top(返回栈顶元素)
# -*- coding:utf-8 -*-
# 利用python的列表来模拟一个栈结构
class MyStack(object):
# 构造函数、初始化函数
def __init__(self):
# 私有属性: 类内部可以用,但是外部不能用
self.__stack = []
def push(self, value):
# 入栈
self.__stack.append(value)
def pop(self, value=None):
# 出栈
if value:
if value in self.__stack:
index = self.__stack.index(value)
return self.__stack[0:index]
else:
if self.__stack:
return self.__stack.pop()
return None
def size(self):
# 返回栈的大小
return len(self.__stack)
def is_empty(self):
# 判断栈是否为空
# 返回False:表示不空
# 返回True:表示空
if self.__stack:
return False
return True
def empty(self):
# 清空栈
# Python 的内存管理机制 叫 GC(GarbageCollection:垃圾回收)
# 如果这个对象没有人使用,会被系统自动回收删除
self.__stack = []
def top(self):
# 返回栈顶元素
if self.__stack:
return self.__stack[-1]
return None
my_stack = MyStack()
my_stack.push("A")
my_stack.push("B")
print my_stack.size()
print my_stack.top()
print my_stack.is_empty()
print my_stack.pop("A")
my_stack.empty()